sql server日期格式到指定格式的datetimeoffset

sbtkgmzw  于 2021-08-13  发布在  Java
关注(0)|答案(1)|浏览(442)

我有一个数据库表,它在SQLServer中有datetime字段。
我必须寄下列样品。你能帮我弄一下这个日期格式吗?
示例:2020-06-10t13:11:00-05:00
谢谢

ttp71kqs

ttp71kqs1#

如果您使用的是受支持的SQLServer版本,那么这实际上非常简单。如果我们假设表中的值为 2020-06-10T13:11:00 它只需要一个 CONVERT 以及 SWITCHOFFSET :

SELECT V.Dt,
       SWITCHOFFSET(CONVERT(datetimeoffset(0),V.dt),'-05:00')
FROM (VALUES(CONVERT(datetime2(0),'2020-06-10T13:11:00')))V(Dt);

如果它实际上是utc时间,并且您需要将其更改为(我假设)central,那么它将是:

SELECT V.Dt,
       CONVERT(datetimeoffset(0),V.dt) AT TIME ZONE 'Central Standard Time'
FROM (VALUES(CONVERT(datetime2(0),'2020-06-10T18:11:00')))V(Dt);

相反,你必须做一些 varchar 操作,因为您使用的是完全不受支持的sql server版本:

--If switching the offset
SELECT V.Dt,
       CONVERT(datetimeoffset(0),CONVERT(varchar(20),V.Dt,126) + '-05:00')
FROM (VALUES(CONVERT(datetime2(0),'2020-06-10T13:11:00')))V(Dt);

--If changing the offset
SELECT V.Dt,
       CONVERT(datetimeoffset(0),CONVERT(varchar(20),DATEADD(HOUR, -5,V.Dt),126) + '-05:00')
FROM (VALUES(CONVERT(datetime2(0),'2020-06-10T18:11:00')))V(Dt);

请注意,这两个都是dst不可知的,因为 SWITCHOFFSET . 仅限 AT TIME ZONE 将考虑dst。

相关问题