【问题标题】:How to show the time in AM/PM format?如何以 AM/PM 格式显示时间?
【发布时间】:2016-09-15 13:56:45
【问题描述】:

如何让 timestamphour 列仅显示 5 AM、6 AM 等时间?

SELECT dateadd(hour, datediff(hour , 0, callstartdt), 0) as TimeStampHour, Count(*) as count
FROM table_one
where month(CallStartDt)=5 and day(callstartdt) = 16
GROUP BY dateadd(hour, datediff(hour, 0, callstartdt), 0)
ORDER BY dateadd(hour, datediff(hour, 0, callstartdt), 0);

TimeStampHour               count
2016-05-16 05:00:00.000     1
2016-05-16 06:00:00.000     4
2016-05-16 07:00:00.000     4
2016-05-16 08:00:00.000     113
2016-05-16 09:00:00.000     110
2016-05-16 10:00:00.000     131

我正在使用 sql-2012。

【问题讨论】:

  • 选择演员表(当 DATEPART(HOUR, GETDATE()) > 12 然后 DATEPART(HOUR, GETDATE()) - 12 否则 DATEPART(HOUR, GETDATE()) 以 varchar(2) 结尾的情况) +' ' + case when DATEPART(HOUR, GETDATE()) > 12 then 'PM' else 'AM' end
  • @kostya 谢谢,我只发布了它的订单时间
  • 您可以添加另一个字段来选择、分组、排序,如 DATEPART(HOUR, callstartdt) 只需确保它是排序中的第一个字段

标签: sql sql-server-2012


【解决方案1】:

如果你只想用 AM 显示小时,PM 试试这个:

SELECT FORMAT(dateadd(hour, datediff(hour , 0, callstartdt), 0),'hh tt') AS TimeStampHour ....

这需要您所拥有的四舍五入的小时数,并使用 Format() 仅显示小时:'hh' 和 AM/PM:'tt'。您还可以使用 Format(GetDate(),100) 显示 AM/PM 的完整时间。

cmets 中的 DATEPART 解决方案也应该可以工作。

http://sqlfiddle.com/#!6/9eecb7/7727

【讨论】:

  • 哎呀,'format' 似乎不是公认的内置函数名称。
  • 当你说你在使用 Sql-2012 时,你肯定是指 SQL Server 2012 对吧?
  • 是的 Microsoft SQL Server Management Studio 11.0.3128.0,很奇怪
  • 太奇怪了,那就是 SQL Server 2012 和 Format 可用:msdn.microsoft.com/en-us/library/hh213505.aspx s/b available for sql 2012+(这是关于 Format 的其他 10 个页面之一)
猜你喜欢
  • 1970-01-01
  • 2013-08-19
  • 1970-01-01
  • 2012-02-11
  • 2013-09-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多