Frage

Ich mache eine Abfrage, die Rückkehr der Anzahl der gespeicherten Prozedur mir, dass alltägliche wie folgt erstellt

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)

und seine bereits Arbeit aber Daten erscheinen im String-Format, dass ich es nicht bestellen kann wie unter

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

Ich mag, dass in dem Zeitpunkt in Datetime-Format ist, dass ich order by erfolgreich machen kann, habe ich versucht, convert(datetime, crdate, 103) aber es zeigt Voll Datum

jede Vorstellung davon, wie zu tun?

War es hilfreich?

Lösung

Um ein sortierbare Datum erhalten Sie Jahr benötigen, dann Monat, dann Datum. Verwendung Format "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

das gibt diese:

Date        Counter
20040711    124
20040713    1
20040725    1
20040726    2
20040803    6

Wenn Sie die richtige Reihenfolge, um aber eine unterschiedlich formatierte Datum erhalten möchten, dann können Sie eine Unterabfrage wie diese verwendet werden.

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

welche Ausbeuten

Date        Counter
11/07/2004  124
13/07/2004  1
25/07/2004  1
26/07/2004  2
03/08/2004  6

Andere Tipps

Wie wäre es damit:

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)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top