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

K M*_*K M 3 sql sql-server timezone

我目前正在使用:

SELECT DATEPART(TZ, SYSDATETIMEOFFSET())
Run Code Online (Sandbox Code Playgroud)

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

谢谢.

Joe*_*ano 5

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

declare @timeStr nvarchar(50) = CAST(SYSDATETIMEOFFSET() as nvarchar(50))
select right(@timeStr, 6)
Run Code Online (Sandbox Code Playgroud)

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

declare @timeStr nvarchar(50) = CONVERT(nvarchar(50), SYSDATETIMEOFFSET(), 126)
select right(@timeStr, 6)
Run Code Online (Sandbox Code Playgroud)

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

-06:00
Run Code Online (Sandbox Code Playgroud)

有关CAST和CONVERT的更多信息,请参见此处.


Wow*_*owe 5

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

SELECT DATENAME(tz, SYSDATETIMEOFFSET())
Run Code Online (Sandbox Code Playgroud)

这将返回带有偏移量的nvarchar

执行结果的屏幕截图