SQL转换datetime和减去小时(SQL convert datetime and subtra

2019-08-01 05:24发布

我想一个日期(createTime)字段从其默认转换2012年10月6日02:29:37.243格式AM / PM所以我用

convert(varchar, CreateTime, 100) as CreateTime

并获得2012年10月6日上午04时29分

到目前为止好,但在同一个语句我要减去4小时,然后显示的字段(GMT问题)。

我已经通过这里了一些职位走了,但找不到任何可以做它在单个语句。

Answer 1:

declare @createTime datetime = '2012-10-06 02:29:37.243';

-- original value, default formatting
select @createTime;

-- formatted
select convert(varchar, @createTime, 100);

-- subtract 4 hours, formatted
select convert(varchar, dateadd(hour, -4, @createTime), 100);

上面的查询使用dateadd永远减去4小时。 如果你的目标是到任意日期时间从UTC转换为本地时间,那么它的更加复杂,因为偏移,你需要加/减依赖于原始日期时间。 像-4 A单个值并不总是可行的。 这里有一些想法来处理一般情况下:

有效地将UTC与本地(即PST)之间的时间日期在2005年SQL



Answer 2:

对于SQL服务器,你可以使用DATETIMEOFFSET

对于MySQL使用CONVERT_TZ功能转换到不同的timeszone。



Answer 3:

对于人们谁想减去天数和小时

    declare @createTime datetime = '2012-10-06 02:29:37.243';
select @createtime as originaltime, dateadd(day, -4, dateadd(hour,-1,@createtime))as minus4daysandhour


文章来源: SQL convert datetime and subtract hours