Heim >Datenbank >MySQL-Tutorial >Wie konvertiere ich Bigint-UNIX-Zeitstempel in DateTime in SQL Server?
SQL Server: Konvertieren von Bigint-UNIX-Zeitstempeln in DateTime
Diese Anleitung zeigt, wie Sie Bigint-UNIX-Zeitstempel effizient in DateTime-Werte in SQL Server konvertieren.
Die primäre Methode besteht in der Verwendung der Funktion DATEADD
:
<code class="language-sql">SELECT DATEADD(SECOND, [unixtime], '19700101') FROM [Table]</code>
Diese Abfrage addiert die Anzahl der Sekunden, die durch die Spalte unixtime
dargestellt werden (seit der Unix-Epoche), zum Basisdatum 1. Januar 1970 und ergibt die entsprechende DateTime.
Die Epoche verstehen
Das Datum „19700101“ bezeichnet die Unix-Epoche – den Ausgangspunkt für UNIX-Zeitstempel (1. Januar 1970, 00:00:00 UTC).
Bewältigung des Problems des Jahres 2038: Eine robuste Lösung
Standardmäßige 32-Bit-Ganzzahl-UNIX-Zeitstempel haben eine Einschränkung: Sie laufen am 19. Januar 2038 um 03:14:07 UTC über. Um Zeitstempel nach diesem Datum zu verarbeiten, können wir einen zweistufigen DATEADD
-Ansatz anwenden:
<code class="language-sql">DECLARE @t BIGINT = 4147483645; DECLARE @oneyear INT = 31622400; -- Approximate seconds in a year SELECT (@t / @oneyear) -- Years to add SELECT (@t % @oneyear) -- Remaining seconds -- DateTime calculation for timestamp @t SELECT DATEADD(SECOND, @t % @oneyear, DATEADD(YEAR, @t / @oneyear, '19700101'));</code>
Diese Methode berechnet zunächst die Anzahl der Jahre und verbleibenden Sekunden und wendet sie dann sequentiell auf das Epochendatum an, um Überlauffehler zu vermeiden und genaue Konvertierungen für Zeitstempel nach 2038 sicherzustellen.
Das obige ist der detaillierte Inhalt vonWie konvertiere ich Bigint-UNIX-Zeitstempel in DateTime in SQL Server?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!