SQL将单个int转换为时间值

时间:2016-09-14 05:37:11

标签: sql sql-server

我正在尝试将表示小时值的单个整数转换为时间。我尝试过使用强制转换,但这会将值转换为日期

cast(datepart(hh,tstart) as datetime) as test

我也试过把它当作时间进行转换是不允许的。

我正在使用的数字是7,8,9,10,11,12,13,...,23,0

我想要的格式是将7转换为7:00,23:00等等

谢谢

5 个答案:

答案 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)

如果您希望显示为“HH:MM”,请使用以下查询。

SELECT CAST(23 AS VARCHAR(50))+':00' 

如果您想将结果作为时间格式,请使用以下查询。

 SELECT CAST(CAST(23 AS VARCHAR(50))+':00:00' AS TIME)

OR

SELECT CAST(DATEADD(HOUR,23,'00:00:00') as time)

这是示例输出:

enter image description here