使用 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查询帮助
使用 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查询帮助
实际上,这可能要容易得多(您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
获取剩余部分以获取一小时的剩余部分并使用 转换为分钟* 60
。然后我们CAST
用分钟来int
截断小数位,使用RIGHT
并在左边填充一个零,以确保它正好是两个字符宽。
试试这个
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