SQL Server中的datetimeoffset与datetime2在UTC上的区别

7

在datetimeoffset字段中存储UTC时间戳与datetime2相比是否有任何好处?它们似乎基本相同。

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

2
在存储方面,具有相同精度的 datetime2 将更小。如果您不打算存储除 UTC 以外的任何内容,则使用 datetime2 - Thom A
Datetime offset 将允许比较同一时间的不同偏移量。例如:CAST('2021-02-12 15:48:11.0677934 -01:00' AS datetimeoffset) = CAST('2021-02-12 16:48:11.0677934 +00:00' AS datetimeoffset) - Dan Guzman
1个回答

14
datetimeoffset 数据类型将允许在相同时间的不同偏移之间进行比较。例如:
SELECT 'equal'
WHERE
    CAST('2021-02-12T15:48:11.0677934-01:00' AS datetimeoffset) = CAST('2021-02-12T16:48:11.0677934+00:00' AS datetimeoffset).

如果您只存储UTC值(其中偏移量始终为零),您可以使用datetime2节省存储空间。datetimeoffset需要10个字节的存储空间,而datetime2对于精度大于等于5需要8个字节,对于精度3-4需要7个字节,对于精度2或更低需要6个字节。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接