2016-05-18 3 views
2

Как я могу получить столбец timestamphour, чтобы показывать только время, например, 5 AM, 6 AM и т. Д.?Как показать время в формате AM/PM?

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.

+0

Возможный дубликат [Преобразование времени DATATYPE в AM PM Формат:] (http://stackoverflow.com/questions/10828492/convert-time-datatype-into-am-pm-format) –

+0

выберите (время, когда DATEPART (HOUR, GETDATE())> 12, затем DATEPART (HOUR, GETDATE()) - 12 else DATEPART (HOUR, GETDATE()) заканчивается как varchar (2)) + '' + \t \t case when DATEPART (HOUR, GETDATE())> 12 then 'PM' else 'AM' end – Kostya

+0

@kostya спасибо, только проблема im с его заказом время –

ответ

2

Если вы хотите, чтобы показать час с утра, вечера попробовать это:

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

Это займет округлую час, что вы имели и использует формат(), чтобы показать только час: «чч» и AM/PM: 'tt'. Вы также можете показывать полный рабочий день с помощью AM/PM, используя формат (GetDate(), 100).

Решение DATEPART в комментариях также должно работать.

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

+0

oops похоже, что «формат» не является признанным встроенным именем функции. –

+0

, когда вы говорите, что используете Sql-2012, вы определенно имеете в виду SQL Server 2012? – EoinS

+0

да Microsoft SQL Server Management Studio \t 11.0.3128.0, weird –

Смежные вопросы