Na podstawie Wikipedii dowiadujemy się, że w systemie operacyjnym Unix i pochodnych czas jest przedstawiany jako 32-bitowa liczba sekund, które upłynęły od godziny 00:00:00 w czwartek, 1 stycznia 1970 czyli uniwersalnego czasu koordynowanego (UTC).

Na tej podstawie można już przekonwertować znacznik czasu UNIX na typ datetime w SQL Server.

DECLARE @tmp TABLE ([TIME_GENERATED] BIGINT) 
INSERT INTO @tmp
VALUES
 (1592554285)
,(1592564177)
,(1592564179)
,(1683892913)
,(1683893117)
,(1686838874)
,(1686838877)
,(1686860494)
SELECT [TIME_GENERATED]
      ,DATEADD(S, [TIME_GENERATED], '1970-01-01') UnixTimestamp
FROM @tmp


Dostajemy następujący wynik

TIME_GENERATED       UnixTimestamp
-------------------- -----------------------
1592554285           2020-06-19 08:11:25.000
1592564177           2020-06-19 10:56:17.000
1592564179           2020-06-19 10:56:19.000
1683892913           2023-05-12 12:01:53.000
1683893117           2023-05-12 12:05:17.000
1686838874           2023-06-15 14:21:14.000
1686838877           2023-06-15 14:21:17.000
1686860494           2023-06-15 20:21:34.000


Na tej podstawie można pójść dalej i konwertować czasy dla różnych stref czasowych:

SELECT *
FROM (VALUES
   (1592554285)
,(1592564177)
,(1592564179)
,(1683892913)
,(1683893117)
,(1686838874)
,(1686838877)
,(1686860494)
) AS Tests(UnixTimestamp)
CROSS APPLY (SELECT DATEADD(SECOND, UnixTimestamp, '1970-01-01') AT TIME ZONE 'UTC') AS CA1(UTCDate)
CROSS APPLY (SELECT UTCDate AT TIME ZONE 'Pacific Standard Time') AS CA2([Pacific Standard Time])
CROSS APPLY (SELECT UTCDate AT TIME ZONE 'GMT Standard Time') AS CA3([GMT Standard Time])
CROSS APPLY (SELECT UTCDate AT TIME ZONE 'Central Europe Standard Time') AS CA5([Central Europe Standard Time])



W rezultacie otrzymamy

UnixTimestamp UTCDate                            Pacific Standard Time              GMT Standard Time                  Central Europe Standard Time
------------- ---------------------------------- ---------------------------------- ---------------------------------- ----------------------------------
1592554285    2020-06-19 08:11:25.000 +00:00     2020-06-19 01:11:25.000 -07:00     2020-06-19 09:11:25.000 +01:00     2020-06-19 10:11:25.000 +02:00
1592564177    2020-06-19 10:56:17.000 +00:00     2020-06-19 03:56:17.000 -07:00     2020-06-19 11:56:17.000 +01:00     2020-06-19 12:56:17.000 +02:00
1592564179    2020-06-19 10:56:19.000 +00:00     2020-06-19 03:56:19.000 -07:00     2020-06-19 11:56:19.000 +01:00     2020-06-19 12:56:19.000 +02:00
1683892913    2023-05-12 12:01:53.000 +00:00     2023-05-12 05:01:53.000 -07:00     2023-05-12 13:01:53.000 +01:00     2023-05-12 14:01:53.000 +02:00
1683893117    2023-05-12 12:05:17.000 +00:00     2023-05-12 05:05:17.000 -07:00     2023-05-12 13:05:17.000 +01:00     2023-05-12 14:05:17.000 +02:00
1686838874    2023-06-15 14:21:14.000 +00:00     2023-06-15 07:21:14.000 -07:00     2023-06-15 15:21:14.000 +01:00     2023-06-15 16:21:14.000 +02:00
1686838877    2023-06-15 14:21:17.000 +00:00     2023-06-15 07:21:17.000 -07:00     2023-06-15 15:21:17.000 +01:00     2023-06-15 16:21:17.000 +02:00
1686860494    2023-06-15 20:21:34.000 +00:00     2023-06-15 13:21:34.000 -07:00     2023-06-15 21:21:34.000 +01:00     2023-06-15 22:21:34.000 +02:00




Dariusz Brejnak

Od prawie trzydziestu lat jest pasjonatem informatyki, a zwłaszcza dziedzin dotyczących baz danych, hurtowni danych oraz ogólnie rozumianej tematyki BI. Jego druga pasja to fotografia http://dariuszbrejnak.pl