我正在尝试将表示小时值的单个整数转换为时间。我尝试过使用强制转换,但这会将值转换为日期
cast(datepart(hh,tstart) as datetime) as test
我也试过把它当作时间进行转换是不允许的。
我正在使用的数字是7,8,9,10,11,12,13,...,23,0
我想要的格式是将7转换为7:00,23:00等等
谢谢
答案 0 :(得分:1)
有很多方法可以做到这一点:
WITH table_name AS
(
SELECT * FROM (VALUES
(1),(2),(3),(10),(23)
) T(H)
)
SELECT DATEADD(HOUR, H, 0) DateValue,
CONVERT(time, DATEADD(HOUR, H, 0)) TimeValue,
CONVERT(varchar(2), H)+':00' TextValue
FROM table_name T1
我建议将值存储为TIME
数据类型。
答案 1 :(得分:0)
你可以试试这个:
select cast(dateadd(hour,3,'00:00:00') as time)
给出了结果:
03:00:00.0000000
在上面的陈述中使用你的int值代替3
答案 2 :(得分:0)
将convert datetime
用于varchar数据类型并使用case语句
DECLARE @date datetime ='2016-05-01 10:00:000'
SELECT CASE cast(DATEPART(hh,@date)as varchar(10))
WHEN '10'then '10:00'
WHEN '11'then '11:00'
WHEN '12'then '12:00'
.
.
.
WHEN '23' then '23:00'
END 'Hourpart'
答案 3 :(得分:0)
您可以将一分钟连接到时间并将其转换为时间
select cast(concat(20,':00') as time(7)) as 'time'
答案 4 :(得分:0)