Игнорирование отметки времени для счетчика в SQL Server 2005
-
20-09-2019 - |
Вопрос
У меня возникла проблема с выяснением того, что, как я думал, будет простым запросом.У меня есть таблица с двумя полями (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
тип запроса.
Решение
А как насчет использования чего-то вроде этого:
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))
Другие советы
Попробуй это:
SELECT DATEADD(dd, DATEDIFF(d, 0, Getdate()), 0)
Замените Getdate() именем вашего столбца.
Вам также захочется просмотреть предыдущее Вопрос StackOverflow а также это предыдущий вопрос