SQL Server:以hh:mm am / pm格式转换时间

时间:2017-01-23 17:51:41

标签: sql sql-server-2008

我想用hh:mm am / pm格式显示我的结果但是我的查询仅适用于上午的结果,但不适用于中午12:00和

的时间
select 
    timein, timeout, 
    SUBSTRING(convert(varchar, timein, 108), 1, 5),  
    SUBSTRING(convert(varchar, TimeOut, 108), 1, 5)
from 
    timeinandoutTable 
where 
    progtype = 'cmp' 
    and TimeIn is not null and TimeOut is not null 

结果

Timein                  TimeOut            timeinresult  timeoutresult 
-----------------------------------------------------------------------
1900-01-01 15:00:00     1900-01-01 16:10:00    15:00        16:10
1900-01-01 10:00:00     1900-01-01 17:00:00    10:00        17:00
1900-01-01 09:30:00     1900-01-01 16:00:00    09:30        16:00 

1 个答案:

答案 0 :(得分:1)

您必须使用其中一种使用" AM / PM"的样式。你的例子(108)没有。使用类似的东西(样式100,取最后7个字符):

select timein, timeout, 
substring(convert(varchar(19), timein, 100), len(convert(varchar(19), timein, 100)) - 6, 7), 
substring(convert(varchar(19), timeout, 100), len(convert(varchar(19), timeout, 100)) - 6, 7)
from timeinandoutTable 
where progtype= 'cmp' and TimeIn is not null and TimeOut is not null 

以下是一个自包含的查询,您可以运行该查询以查看此工作:

select convert(datetime, 'Dec 31 2015 10:25PM', 100) as datetime_value, 
substring(convert(varchar(19), 'Dec 31 2015 10:25PM', 100), len(convert(varchar(19), 'Dec 31 2015 10:25PM', 100)) - 6, 7) as my_string_value


datetime_value         | my_string_value
2015-12-31 22:25:00.000| 10:25PM