在SQL中将GMT转换为本地时间

时间:2018-07-23 08:04:42

标签: sql sql-server

我在SQL表中具有102114时间格式。

这是格林尼治标准时间0,我要在格林尼治标准时间+5:30表示这是155114。

2 个答案:

答案 0 :(得分:0)

如果您坚持使用bigint,那么这是我能想到的最简洁的解决方案,只需将102114替换为您的列名

    DATEADD(minute,330,cast(substring(cast(102114 AS nvarchar(10)),1,2) + ':' 
+ substring(cast(102114 AS nvarchar(10)),3,2) +':'
+ substring(cast(102114 AS nvarchar(10)),5,2) AS time))

答案 1 :(得分:0)

这将获得您想要的结果,但是,正在进行很多转换...

DECLARE @Time bigint; --This is really the wrong datatype here
SET @Time = 102114

SELECT CONVERT(bigint,REPLACE(CONVERT(varchar(8),DATEADD(MINUTE, 330, CONVERT(time,STUFF(STUFF(RIGHT(REPLICATE('0',6) + CONVERT(varchar(6), @Time),6),5,0,':'),3,0,':')))),':',''));

但是,要演示使用正确的数据类型(datetimeoffset)有多么容易:

DECLARE @Time datetimeoffset;
SET @Time = '10:21:14';
SELECT @Time,SWITCHOFFSET(@Time, '+05:30');