我在SQL表中具有102114时间格式。
这是格林尼治标准时间0,我要在格林尼治标准时间+5:30表示这是155114。
答案 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');