在保留偏移量的同时将 DATETIMEOFFSET 转换为 DateTime
在 SQL Server 2008 中,将 DATETIMEOFFSET 字段转换为 DATETIME 字段通常会导致丢失由于偏移而产生的时间信息。但是,有一种方法可以在保留偏移量的同时转换值,有效地将其转换为 UTC。
此转换的关键在于使用带有正确样式参数的 CONVERT 函数。 style 参数指定如何执行转换。为此,我们需要使用样式 1:
SELECT CONVERT(datetime2, @createdon, 1)
上述查询采用 DATETIMEOFFSET 变量 (@createdon) 并使用样式 1 将其转换为 DATETIME2 值。此样式将 DATETIMEOFFSET 值转换为通过减去偏移量得到 UTC 中的 DATETIME2 值。
例如,考虑以下 DATETIMEOFFSET value:
2008-12-19 17:30:09.0000000 +11:00
如果我们使用样式 1 转换此值,我们会得到:
2008-12-19 06:30:09.0000000
此结果采用 UTC 时间,有效地消除了偏移量。
请注意,使用样式 1 从 DATETIME2 转换为 DATETIMEOFFSET 只是将偏移量设置为 00:00。这可以用作将具有非零偏移量的 DATETIMEOFFSET 值转换为 UTC 格式的 DATETIMEOFFSET 值的快速方法:
SELECT convert(datetimeoffset,CONVERT(datetime2, @createdon, 1))
以上是如何在保留偏移量的同时将 SQL Server 2008 DATETIMEOFFSET 转换为 DATETIME?的详细内容。更多信息请关注PHP中文网其他相关文章!