Есть ли какие-либо преимущества хранения метки времени UTC в поле datetimeoffset по сравнению с datetime2? Кажется, они по сути одинаковы.

+------------------------------------+-----------------------------+
| datetimeoffset                     | datetime2                   |
|------------------------------------+-----------------------------|
| 2021-02-12 16:48:11.0677934 +00:00 | 2021-02-12 16:48:11.0677934 |
+------------------------------------+-----------------------------+
0
dcmalk 12 Фев 2021 в 20:08

1 ответ

Лучший ответ

Тип данных datetimeoffset позволит сравнивать разные смещения в одно и то же время. например.:

SELECT 'equal'
WHERE
    CAST('2021-02-12 15:48:11.0677934 -01:00' AS datetimeoffset) = CAST('2021-02-12 16:48:11.0677934 +00:00' AS datetimeoffset).

Если вы храните только значения UTC (где смещение всегда равно нулю), вы можете сэкономить место для хранения с помощью datetime2. datetimeoffset требует 10 байтов памяти, тогда как datetime требует 8 байтов для точности 5 или больше, 7 байтов для точности 3-4 и 6 байтов для точности 2 или меньше.

1
Dan Guzman 12 Фев 2021 в 18:03