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.
01 | DECLARE @tmp TABLE ([TIME_GENERATED] BIGINT ) |
12 | SELECT [TIME_GENERATED] |
13 | ,DATEADD(S, [TIME_GENERATED], '1970-01-01' ) UnixTimestamp |
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:
11 | ) AS Tests(UnixTimestamp) |
12 | CROSS APPLY ( SELECT DATEADD( SECOND , UnixTimestamp, '1970-01-01' ) AT TIME ZONE 'UTC' ) AS CA1(UTCDate) |
13 | CROSS APPLY ( SELECT UTCDate AT TIME ZONE 'Pacific Standard Time' ) AS CA2([Pacific Standard Time ]) |
14 | CROSS APPLY ( SELECT UTCDate AT TIME ZONE 'GMT Standard Time' ) AS CA3([GMT Standard Time ]) |
15 | 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 |