Datum sortieren

13/10/2008 - 12:48 von Peter Maler | Report spam
Hallo Newsgroup,


ich hab da mal eine Frage:

Ausgangssituation:
MSSQL 7 SP4

Ich hab eine Tabelle mit Stammdaten von Patienten in unserer Software soll
jetzt ein Report zur Erinnerung an Geburtstage erstellt werden mit folgender
Sortierung:

Bsp.:
01.10.1977
03.10.1955
02.11.1954

Also nach Tag und dann nach Monat.

Bisher hab ich folgendes ins Order Kriterium geschrieben:

ORDER BY DAY(PT_DateGeb), MONTH(PT_DateGeb) => Sortiert nur nach Tag

Dann hab ich die ganze Sache in folgendes Format konvertiert dd.mm.yyyy, mit
der Left Funktion hab ich mir die ersten 6 Zeichen genommen und noch '2008'
rangehàngt und dann sortiert.
Die Sortierung klappt ebenfalls nicht.

Dann hab ich mir das wieder ins dd.mm.yyyy Format konvertiert zusàtzlich
noch in einen Varchar umgewandelt und versucht mit der Substring Funktion
nach Tag und Monat sortiert. Klappt ebenfalls nicht.

Wie kriege ich das wie oben beschrieben sortiert?


Vielen Dank und schönen Gruß
Peter
 

Lesen sie die antworten

#1 Uwe Ricken
13/10/2008 - 13:25 | Warnen spam
Hallo Peter,

probier' doch mal den folgenden Code... Sieht komplex aus ist aber
eigentlich recht einfach.

SELECT CONVERT(datetime,
CONVERT(varchar, YEAR(getdate())) +
CASE WHEN LEN(DATEPART(mm, d.PT_DateGeb)) = 1
THEN '0' + CONVERT(varchar, DATEPART(mm, d.PT_DateGeb))
ELSE CONVERT(varchar, DATEPART(mm, d.PT_DateGeb))
END +
CASE WHEN LEN(DATEPART(dd, d.PT_DateGeb)) = 1
THEN '0' + CONVERT(varchar, DATEPART(dd, d.PT_DateGeb))
ELSE CONVERT(varchar, DATEPART(dd, d.PT_DateGeb))
END
) AS Birthday,
DATEPART(dd, d.PT_DateGeb) AS Day,
DATEPART(mm, d.PT_DateGeb) AS Month,
YEAR(getdate()) AS Year
FROM (
SELECT CONVERT(datetime, '19771001') AS PT_DateGeb
UNION
SELECT CONVERT(datetime, '19550903')
UNION
SELECT CONVERT(datetime, '19541102')
) d
ORDER BY
DATEPART(mm, d.PT_DateGeb),
DATEPART(dd, d.PT_DateGeb)

Entscheidend ist hierbei, dass zunàchst ein ISO-Format für das Datum
generiert wird.
Dieses ISO-Datum wandel ich dann mit dem àusseren CONVERT(datetime,...)
wieder in ein Datum um.
Die Sortierung sollte klar sein ;-)

HTH ;-)

Gruß, Uwe Ricken
MCP for SQL Server 2000 Database Implementation

db-Berater GmbH - 64390 Erzhausen
http://www.db-berater.de
http://www.memberadmin.de
http://www.conferenceadmin.de
____________________________________________________
dbdev: http://www.dbdev.org
FAQ: http://www.donkarl.com/AccessFAQ.htm

Ähnliche fragen