我正在尝试将日期时间(createTime)字段从其默认的2012-10-06 02:29:37.243格式转换为上午/下午,因此我使用
convert(varchar, CreateTime, 100) as CreateTime
并获得 2012年10月6日4:29 AM 。
到目前为止一切顺利,但我想在同一条语句中减去4小时,然后显示该字段(格林尼治标准时间问题)。
我在这里浏览了一些帖子,但是在单个语句中找不到任何可以做到的事情。
最佳答案
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这样的单个值并不总是有效。以下是处理一般情况的一些想法:Effectively Converting dates between UTC and Local (ie. PST) time in SQL 2005
关于sql-server - SQL转换日期时间并减去小时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12756769/