使用SQl Server 2000
表
time (varchar)
2
1.5
3
5
2
2.5
...
我想以日期时间格式转换时间,如02:00(HH:MM),2.5或1.5应该是02:30小时,01:30小时
预期输出
time (varchar)
02:00
01:30
03:00
05:00
02:00
02:30
...
如何在sql中执行此操作
需要sql查询帮助
答案 0 :(得分:2)
实际上,这可能会更容易(您可以CAST
到time
或datetime
)
CAST(DATEADD(SECOND, n * 60, 0.0) as time)
但是如果你想要varchar
实施
LTRIM(CAST(n as int))
+ RIGHT('0' + LTRIM(CAST((n % 1) * 60) as int), 2)
n
是您的号码。
LTRIM
用作将数字转换为varchar
的简单方法。我们CAST
n
到int
获取小时部分,然后我们从n
获取剩余部分以获得剩余的一小时部分,并使用{{转换为分钟1}}。然后我们* 60
分钟到CAST
截断小数位,使用int
并在左边填0,以确保它正好是两个字符宽。
答案 1 :(得分:0)
试试这个
create table t(tim varchar(10))
insert into t
VALUES('2'),('1.5'),('3'),('5'),('2'),('2.5')
select LEN(LEFT(tim,CHARINDEX('.',tim,1))),tim,CASE WHEN CHARINDEX('.',tim,1)>0 then
CASE WHEN LEN(LEFT(tim,CHARINDEX('.',tim,1)-1))=1 then '0'+LEFT(tim,CHARINDEX('.',tim,1)) else LEFT(tim,CHARINDEX('.',tim,1)) end +':'+cast(cast((cast(right(tim,len(tim)-CHARINDEX('.',tim,1)) as int)*60.0)/10 as int) as varchar)
else '0'+tim+':00' end from t