如何从 DateTimeOffset 对象中选择 UTC 偏移量?

问题描述 投票:0回答:3

我目前正在使用:

SELECT DATEPART(TZ, SYSDATETIMEOFFSET())

但是,它会返回以分钟为单位的偏移量。我想保留“-05:00”而不是“-300”的格式

谢谢你。

sql sql-server timezone
3个回答
10
投票

在 MS SQL Server 中您也可以使用

SELECT DATENAME(tz, SYSDATETIMEOFFSET())

这将返回一个带有偏移量的 nvarchar

执行结果截图


5
投票

如果要提取 datetimeoffset 变量末尾的确切字符串“-05:00”,可以使用 SQL Server 字符串操作。 我认为使用内置的 SQL DateTime 函数不可能做到这一点。 您可以使用 CAST 函数,我相信它默认为 ISO 8601 格式:

declare @timeStr nvarchar(50) = CAST(SYSDATETIMEOFFSET() as nvarchar(50))
select right(@timeStr, 6)

如果想更明确,可以使用格式类型为126的CONVERT函数,显式告诉SQL Server使用ISO 8601:

declare @timeStr nvarchar(50) = CONVERT(nvarchar(50), SYSDATETIMEOFFSET(), 126)
select right(@timeStr, 6)

这两种方法在我的时区返回:

-06:00

有关 CAST 和 CONVERT 的更多信息请参阅此处


0
投票

您还可以使用

FORMAT
方法直接到达偏移部分,例如:

SELECT FORMAT(SYSDATETIMEOFFSET(), 'zzz') AS TimezoneOffset

© www.soinside.com 2019 - 2024. All rights reserved.