datetimeoffset vs datetime2 for UTC on SQL Server



在datetimeoffset字段与datetime2中存储UTC时间戳是否有任何好处?看起来它们本质上是一样的。

+------------------------------------+-----------------------------+
| datetimeoffset                     | datetime2                   |
|------------------------------------+-----------------------------|
| 2021-02-12 16:48:11.0677934 +00:00 | 2021-02-12 16:48:11.0677934 |
+------------------------------------+-----------------------------+

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个字节的存储空间,而datetime2需要8个字节的存储空间,精度为5或更高,精度为3-4需要7个字节,精度为2或更低需要6个字节。

最新更新