Gibt es einen Weg, um DateTime-Wert vom Typ timestamp-Spalte?
Brauche ich ein select aus der Tabelle, die nicht über die Spalte, die sagt, wenn die Zeile eingefügt wurde, nur timestamp
Spalte (Werte wie: 0x0000000000530278). Einige Daten importiert wurden, an den Tisch von gestern und jetzt muss ich herausfinden, was genau wurde importiert 🙁
Gibt es einen Weg, es zu tun mit nur timestamp
info? Hier Ich festgestellt, dass:
- Timestamp ist ein 8 Byte sequentiell Hex-Zahl, das hat nichts zu tun weder mit dem Datum noch die Uhrzeit.
- Um den aktuellen Wert des Zeitstempels verwenden: @@DBTS.
Vielleicht gibt es einen Weg zu finden, was war timestamp
Wert um bestimmten Zeit? Das würde helfen, bilden eine Auswahl. Oder gibt es vielleicht eine bekannte Lösung?
InformationsquelleAutor Dandikas | 2008-10-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Transact-SQL-Datentyp timestamp ist ein binärer Datentyp mit nicht-Zeit-bezogene Werte.
Also um deine Frage zu beantworten: gibt es einen Weg, um DateTime-Wert vom Typ timestamp-Spalte?
Die Antwort ist: Keine
InformationsquelleAutor kristof
Den timestamp-Datentyp in SQL Server 2005 ist ein synonym für rowversion und ist nur eine Nummer, die automatisch hochgezählt wird mit jeder Zeile aktualisieren.
Können Sie werfen es auf bigint zu sehen, seinen Wert.
Zu bekommen, was Sie wollen für neue oder aktualisierte Zeilen, Sie sollten wahrscheinlich hinzufügen von einem anderen datetime-Spalte (lastupdate) und einen trigger zu aktualisieren, dass die Spalte mit jedem update.
Für Zeilen, die bereits eingelegt in der Vergangenheit ich glaube nicht, dass Sie etwas tun können, finden Sie die genaue Zeit.
InformationsquelleAutor Panagiotis Korros
Ich fürchte, es ist nicht möglich, zu konvertieren/casten einen TIMESTAMP in ein DATETIME.
Sie haben ganz unterschiedliche Verwendungen und Implementierungen, die nicht kompatibel sind.
Finden Sie unter diesem link
http://www.sqlteam.com/article/timestamps-vs-datetime-data-types
Bücher on-line-sagt auch http://msdn.microsoft.com/en-us/library/aa260631.aspx
InformationsquelleAutor evilhomer
Andere Antwort auf deine Frage:
Wenn die timestamp-Spalte ist die einzige Ressource, für die Sie die Wiederherstellung (ohne backups etc.) können Sie versuchen, verwenden Sie die folgende Logik
Timestamp ist ein Wert von ein Zähler, der inkrementiert wird für jeden insert-oder update-operation, die auf eine Tabelle, die eine timestamp-Spalte enthält.
Wenn die Daten importieren, die gestern passiert ist, war ein einfügen von mehreren Datensätzen können Sie sehen, eine Sequenz von zahlen in der timestamp-Spalte e.g:
Der letzten Sequenz können Sie Ihre Daten eingegeben haben (natürlich ist es nicht garantiert)
Sie con kombinieren Sie das wissen mit anderen Dingen (wie auto-increment-Spalte, wenn Sie Sie verwenden) zu identifizieren, die Datensätze, die Sie interessiert sind in.
InformationsquelleAutor kristof
Anderen Menschen Recht darauf hingewiesen, dass der timestamp ist ein binärer Zähler.
Dennoch, wenn in jeder Tabelle Ihrer Datenbank, müssen Sie die timestamp und datetime, Wann es aufgenommen wurde, können Sie mit diesem Stück von Informationen von timestamp in ein Datum-Bereich.
Eine log-Tabelle ist ein guter Kandidat für diesen Zweck. Vorausgesetzt, Ihr import-Tabelle "Rechnungen", könnten Sie mit einer Abfrage wie der folgenden:
InformationsquelleAutor ildanny
Ich denke, Ihre beste Wette ist, um eine Sicherung wiederherstellen aus, bevor Sie die Einsätze und vergleichen Sie die Datenbank-Tabelle mit der aktuellen Tabelle.
InformationsquelleAutor Jonas Lincoln
Identifizieren Sie neue Zeilen Zeitstempel, die Sie benötigen, um zu verfolgen, die Zeitstempel, die gab es vorher. In einer Prise können Sie:
Mit einem geringeren Risiko von false positives, wenn alles andere geht schon in die DB dadurch erhalten Sie einen guten Unterschied.
Für eine robuste überprüfen Sie berechnen kann MD5 oder SHA-1-hashes mit Hashbytes auf den Zeilen-Inhalt zu geben Sie einen Unterschied mit einer sehr geringen Wahrscheinlichkeit einer Kollision (siehe diesen wikipedia-Artikel über Geburtstag Angriffe für eine Diskussion dieses Problems).
InformationsquelleAutor ConcernedOfTunbridgeWells
Ich weiß, es ist zu spät, aber vielleicht jemand anderes helfen.
Timestamp/RowVersion kann gegossen werden, BigInt, aber auf jeden meine, es kann nicht sein, im Vergleich zu datetime.
Folgende Anweisung entnommen MSDN
Weitere Details finden Sie hier
InformationsquelleAutor Ashish Singh