Сколько сохраненных процедур создано каждый день (проблема в преобразовании dateTime)?
-
30-09-2019 - |
Вопрос
Я делаю запрос, который возвращается ко мне счет на хранимой процедуре, которая создала каждый день, как следует
SELECT convert(varchar, crdate, 103) as Date,Count(*) as Counter
FROM sysobjects
WHERE (xtype = 'p') AND (name NOT LIKE 'dt%')
Group by convert(varchar, crdate, 103)
и его уже работают, но даты появляются в строковом формате, что я не могу заказать его, как ниже
01/03/2010 3
01/04/2008 4
01/05/2010 5
01/11/2008 1
01/12/2008 4
02/03/2008 1
02/03/2010 2
02/04/2008 4
02/05/2010 2
02/11/2008 2
02/11/2009 2
02/12/2008 4
03/01/2010 1
03/02/2010 2
03/03/2010 2
03/04/2008 2
03/04/2010 2
03/05/2008 1
03/05/2010 2
Я хочу сделать это, в какой дате в формате DateTime я могу сделать order by
Успешно, я пытался convert(datetime, crdate, 103)
Но он показывает полную дату
Любое представление о том, как сделать?
Решение
Чтобы получить сортирующую дату, вам нужен год, затем месяц, затем дата. Используйте формат «112».
SELECT convert(varchar, crdate, 112) as Date,Count(*) as Counter
FROM sysobjects
WHERE (xtype = 'p') AND (name NOT LIKE 'dt%')
Group by convert(varchar, crdate, 112)
order by Date
Что дает это:
Date Counter
20040711 124
20040713 1
20040725 1
20040726 2
20040803 6
Если вы хотите получить правильный порядок сортировки, но по-разному отформатированную дату, вы можете использовать такой подзапрос.
select CONVERT(varchar, GroupDate, 103) Date, Counter
FROM (
SELECT MIN(crdate) as GroupDate,Count(*) as Counter
FROM sysobjects
WHERE (xtype = 'p') AND (name NOT LIKE 'dt%')
Group by convert(varchar, crdate, 112)
) A
order by GroupDate
который дает
Date Counter
11/07/2004 124
13/07/2004 1
25/07/2004 1
26/07/2004 2
03/08/2004 6
Другие советы
Как насчет этого:
select dt, COUNT(*) from
(
SELECT convert(datetime, convert(varchar, crdate, 112)) as dt
FROM sysobjects
WHERE (xtype = 'p') AND (name NOT LIKE 'dt%')
) DayOnly
group by dt
order by dt asc
SELECT DATEADD(day, DATEDIFF(day, 0, o.crdate), 0) [Date],
COUNT(*) [Counter]
FROM sys.sysobjects o
WHERE o.xtype = 'p' AND o.name NOT LIKE 'dt%'
GROUP BY DATEADD(day, DATEDIFF(day, 0, o.crdate), 0)
Не связан с StackOverflow