SQL Server : Conversion des horodatages Bigint UNIX en DateTime
Ce guide montre comment convertir efficacement les horodatages bigint UNIX en valeurs DateTime dans SQL Server.
La méthode principale consiste à utiliser la fonction DATEADD
:
<code class="language-sql">SELECT DATEADD(SECOND, [unixtime], '19700101') FROM [Table]</code>
Cette requête ajoute le nombre de secondes représenté par la colonne unixtime
(depuis l'époque Unix) à la date de base du 1er janvier 1970, donnant le DateTime correspondant.
Comprendre l'époque
La date « 19700101 » signifie l'époque Unix, le point de départ des horodatages UNIX (1er janvier 1970, 00:00:00 UTC).
Résoudre le problème de l'an 2038 : une solution robuste
Les horodatages UNIX standard de 32 bits entiers ont une limitation : ils débordent le 19 janvier 2038 à 03:14:07 UTC. Pour gérer les horodatages au-delà de cette date, nous pouvons utiliser une DATEADD
approche en deux étapes :
<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>
Cette méthode calcule d'abord le nombre d'années et de secondes restantes, puis les applique séquentiellement à la date de l'époque, évitant ainsi les erreurs de débordement et garantissant des conversions précises pour les horodatages au-delà de 2038.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!