-1

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

4

2 回答 2

2

实际上,这可能要容易得多(您CAST可以timedatetime

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获取剩余部分以获取一小时的剩余部分并使用 转换为分钟* 60。然后我们CAST用分钟来int截断小数位,使用RIGHT并在左边填充一个零,以确保它正好是两个字符宽。

于 2012-07-29T07:40:36.400 回答
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
于 2012-07-29T09:30:02.563 回答