4

我目前正在使用:

SELECT DATEPART(TZ, SYSDATETIMEOFFSET())

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

谢谢你。

4

2 回答 2

7

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

SELECT DATENAME(tz, SYSDATETIMEOFFSET())

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

执行结果截图

于 2016-06-08T08:37:37.760 回答
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 的更多信息,请参见此处

于 2012-12-27T22:11:35.540 回答