Maison >base de données >tutoriel mysql >Comment convertir les horodatages Bigint UNIX en DateTime dans SQL Server ?

Comment convertir les horodatages Bigint UNIX en DateTime dans SQL Server ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-17 16:36:14900parcourir

How to Convert Bigint UNIX Timestamps to DateTime in SQL Server?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn