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

时间:2012-12-27 19:58:30

标签: sql sql-server timezone

我目前正在使用:

SELECT DATEPART(TZ, SYSDATETIMEOFFSET())

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

谢谢。

2 个答案:

答案 0 :(得分:5)

如果你想提取确切的字符串' -05:00'在datetimeoffset变量的末尾,您可以使用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 see here的更多信息。

答案 1 :(得分:5)

在MS SQL Server中,您也可以使用

SELECT DATENAME(tz, SYSDATETIMEOFFSET())

将返回带有偏移

的nvarchar

screenshot of the excecution result