0

我只想要当前时间的小时值

就像它是4:31:13所以我只想要4并且也应该是12 小时格式..

请帮我...

4

6 回答 6

2

SELECT 
case when DATEPART(hh, time) > 12
then DATEPART(hh, time) - 12 
else DATEPART(hh, time) end as hour
from time;

样品小提琴

于 2013-05-07T11:05:39.443 回答
1

这也将正确处理 12 AM 和 12 PM 时间:

select case datepart(hh, getdate()) 
    when  0 then 12 
    when 12 then 12 
    else datepart(hh, getdate()) % 12 
    end;
于 2013-05-07T11:17:51.047 回答
1
SELECT (DATEPART(HOUR, GETDATE()) + 11) % 12 + 1

在凌晨 1 点,这将返回:

1 + 11 = 12; 12 % 12 = 0; 0 + 1 = 1

在下午 1 点(24 小时制的 13:00),您将获得:

13 + 11 = 24; 24 % 12 = 0; 0 + 1 = 1

同样,在凌晨 2 点和下午 2 点(14:00):

 2 + 11 = 13; 13 % 12 = 1; 1 + 1 = 2
14 + 11 = 25; 25 % 12 = 1; 1 + 1 = 2

依此类推,直到上午 11 点和晚上 11 点。在上午 12 点 (0:00) 和下午 12 点 (12:00),它将是这样的:

 0 + 11 = 11; 11 % 12 = 11; 11 + 1 = 12
12 + 11 = 23; 23 % 12 = 11; 11 + 1 = 12
于 2013-05-07T12:48:57.690 回答
0
SELECT SUBSTRING(LTRIM(RIGHT(CONVERT(VARCHAR(20), GETDATE(), 100), 7)),1,1)
于 2013-05-07T11:02:32.147 回答
0

我不知道您使用的是什么数据库引擎,但在 PostgreSQL 中您可以这样做:

select to_char(current_timestamp, 'HH12');
于 2013-05-07T11:03:28.133 回答
0

SELECT DATEPART(hour, '2008-09-27 09:30:00.000')

参考这个

于 2013-05-07T11:00:02.013 回答