我想一个日期(createTime)字段从其默认转换2012年10月6日02:29:37.243格式AM / PM所以我用
convert(varchar, CreateTime, 100) as CreateTime
并获得2012年10月6日上午04时29分 。
到目前为止好,但在同一个语句我要减去4小时,然后显示的字段(GMT问题)。
我已经通过这里了一些职位走了,但找不到任何可以做它在单个语句。
我想一个日期(createTime)字段从其默认转换2012年10月6日02:29:37.243格式AM / PM所以我用
convert(varchar, CreateTime, 100) as CreateTime
并获得2012年10月6日上午04时29分 。
到目前为止好,但在同一个语句我要减去4小时,然后显示的字段(GMT问题)。
我已经通过这里了一些职位走了,但找不到任何可以做它在单个语句。
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
对于SQL服务器,你可以使用DATETIMEOFFSET
对于MySQL使用CONVERT_TZ功能转换到不同的timeszone。
对于人们谁想减去天数和小时
declare @createTime datetime = '2012-10-06 02:29:37.243';
select @createtime as originaltime, dateadd(day, -4, dateadd(hour,-1,@createtime))as minus4daysandhour