如何更新小时和分钟

时间:2012-07-29 07:32:51

标签: sql sql-server sql-server-2000

使用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查询帮助

2 个答案:

答案 0 :(得分:2)

实际上,这可能会更容易(您可以CASTtimedatetime

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 nint获取小时部分,然后我们从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