使用SQL Server datetimeoffset

SBB*_*SBB 8 t-sql sql-server datetime date

我正在尝试存储在工具中设置的会议的日期,时间和时区.我允许用户指定日期和时间以及从时区列表中选择.

我的问题是试图找出如何采取所有3个部分并将其格式化为正确datetimeoffset的存储.

我相信这是SQL Server需要的格式datetimeoffset:

YYYY-MM-DD hh:mm:ss[.nnnnnnn] [{+|-}hh:mm]
Run Code Online (Sandbox Code Playgroud)

我的第一个问题是我的时区价值下降应该是什么?

其次,SQL Server中是否有内置的方法来传递这个数据字符串并将其转换为所需的格式datetimeoffset

小智 6

如果您的工具可以从时间转换为字符串,请将其转换为您包含的格式.该[.nnnn]部分是纳秒.我还没有看到应用程序需要那么高的准确性.如果您对二级准确度没问题datetimeoffset(0)就足够了.

例:

DECLARE @time_str varchar(30) = '2015-01-19 7:20:00 -08:00'
DECLARE @time datetimeoffset(0) = CONVERT(datetimeoffset, @time_str)

SELECT DATEPART(YEAR, @time),
       DATEPART(MONTH, @time),
       DATEPART(DAY, @time),
       DATEPART(HOUR, @time),
       DATEPART(MINUTE, @time),
       DATEPART(SECOND, @time),
       DATEPART(TZOFFSET, @time)
Run Code Online (Sandbox Code Playgroud)