Heim > Datenbank > MySQL-Tutorial > Wie konvertiert man UNIX-Zeitstempel in SQL Server in DateTime und löst das Jahr-2038-Problem?

Wie konvertiert man UNIX-Zeitstempel in SQL Server in DateTime und löst das Jahr-2038-Problem?

Mary-Kate Olsen
Freigeben: 2025-01-17 16:27:10
Original
496 Leute haben es durchsucht

How to Convert UNIX Timestamps to DateTime in SQL Server and Handle the Year 2038 Problem?

Konvertieren von UNIX-Zeitstempeln in Datumsangaben in SQL Server

Viele SQL Server-Benutzer müssen UNIX-Zeitstempel (als Bigint gespeichert) in DateTime-Werte konvertieren. Dies ist wichtig, wenn Sie mit Daten von Systemen arbeiten, die UNIX-Zeitstempel zur Darstellung von Datum und Uhrzeit verwenden.

Eine einfache Lösung:

Ein gängiger Ansatz ist die Verwendung der Funktion DATEADD:

<code class="language-sql">SELECT DATEADD(second, [unixtime], '19700101')
FROM [Table]</code>
Nach dem Login kopieren

Hier stellt „19700101“ die Epoche dar – 1. Januar 1970, 00:00:00 UTC, der Startpunkt für UNIX-Zeitstempel.

Das Jahr-2038-Problem und seine Lösung:

Die Epochenzeit zählt die Sekunden seit der Epoche. Die DATEADD-Funktion von SQL Server hat jedoch eine Ganzzahlbegrenzung für die Anzahl der Sekunden. Das Hinzufügen von mehr als 2.147.483.647 Sekunden führt zu einem arithmetischen Überlauffehler. Das ist das „Jahr-2038-Problem“.

Um Zeitstempel über 2038 hinaus zu verarbeiten, besteht eine Problemumgehung darin, die Addition in zwei DATEADD Vorgänge aufzuteilen:

<code class="language-sql">DECLARE @t BIGINT = 4147483645;
DECLARE @oneyear INT = 31622400; -- Approximate seconds in a year

SELECT DATEADD(second, @t % @oneyear, DATEADD(year, @t / @oneyear, '19700101'));</code>
Nach dem Login kopieren

Diese Methode berechnet zunächst die Anzahl der Jahre und verbleibenden Sekunden und fügt sie dann sequentiell hinzu. Dadurch wird die Ganzzahlbeschränkung effektiv überwunden und die Konvertierung von Zeitstempeln weit über das Jahr 2038 hinaus ermöglicht.

Das obige ist der detaillierte Inhalt vonWie konvertiert man UNIX-Zeitstempel in SQL Server in DateTime und löst das Jahr-2038-Problem?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage