我有一个数据库表,它在SQLServer中有datetime字段。我必须寄下列样品。你能帮我弄一下这个日期格式吗?示例:2020-06-10t13:11:00-05:00谢谢
ttp71kqs1#
如果您使用的是受支持的SQLServer版本,那么这实际上非常简单。如果我们假设表中的值为 2020-06-10T13:11:00 它只需要一个 CONVERT 以及 SWITCHOFFSET :
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版本:
varchar
--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。
AT TIME ZONE
1条答案
按热度按时间ttp71kqs1#
如果您使用的是受支持的SQLServer版本,那么这实际上非常简单。如果我们假设表中的值为
2020-06-10T13:11:00
它只需要一个CONVERT
以及SWITCHOFFSET
:如果它实际上是utc时间,并且您需要将其更改为(我假设)central,那么它将是:
相反,你必须做一些
varchar
操作,因为您使用的是完全不受支持的sql server版本:请注意,这两个都是dst不可知的,因为
SWITCHOFFSET
. 仅限AT TIME ZONE
将考虑dst。