Игнорирование метки времени для подсчета в SQL Server 2005 - PullRequest
3 голосов
/ 18 ноября 2009

У меня проблема с выяснением того, что я думаю, будет простым запросом. У меня есть таблица с двумя полями (EntryDateTime, Message), которая, как вы можете догадаться, регистрирует конкретные сообщения с отметкой даты для приложения мониторинга.

Я ищу подсчет всех сообщений типа в день, но временная часть штампа (хотя и необходима для всего остального) вызывает у меня проблемы.

Я хотел сделать что-то вроде

SELECT COUNT(Message)
FROM DBName.dbo.TableName
WHERE Message = 'LoginFailed'
GROUP BY EntryDateTime

Что я ищу, так как вывод что-то вроде

2009-06-26, 142

2009-06-27, 259

2009-06-28, 57

Конечно, это дает мне вывод сообщений, больше похожих на

2009-06-26 00:01:01, 11

2009-06026 00:01:02, 12

Любая помощь в получении метки времени для этого запроса будет очень полезна. Я не хотел бы вводить диапазоны дат вручную, так как этот запрос будет выполнять поиск по годам регистрации, и я хотел бы не вводить 365 диапазонов дат для запроса типа BETWEEN.

Ответы [ 2 ]

2 голосов
/ 18 ноября 2009

Как насчет использования что-то вроде этого:

SELECT COUNT (Message), CONVERT(DATETIME, CONVERT(CHAR(10), EntryDateTime, 101))  
FROM DBName.dbo.TableName  
WHERE Message = 'LoginFailed'  
GROUP BY CONVERT(DATETIME, CONVERT(CHAR(10), EntryDateTime, 101))  
0 голосов
/ 18 ноября 2009

Попробуйте это:

SELECT DATEADD(dd, DATEDIFF(d, 0, Getdate()), 0)

Замените Getdate () на имя вашего столбца.

Вы также захотите посмотреть на этот предыдущий вопрос StackOverflow , а также на этот предыдущий вопрос

...