Mit Abfrage nach Tag (1 - 31) eines Datumfeldes sortieren

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Mit Abfrage nach Tag (1 - 31) eines Datumfeldes sortieren

von althoffc » Do, 22.02.2007 13:35

Hallo Thomas,

ja ich verwende die HSQLDB. Habe die Infos gefunden. :D
Danke und Gruß,
Carsten

von Toxitom » Do, 22.02.2007 13:11

Hey Carsten,
Wo kann ich solche Informationen über "SQL-Funktionen" finden?
Na ja, das sind keine allgemeinen SQL Kommandos, sondern eingebaute Funktionen der jeweils verwendeten Datenbank-Engine - und daher immer verschieden.
Nutzt du die HSQLDB, dann findest du ein Benutzerhandbuch unter http://www.hsgldb.org, zwar funktionieren (noch) nicht alle dort aufgelisteten funktionen auch in Base, aber doch fast alle ;-)

Viele Grüße
Thomas

von althoffc » Do, 22.02.2007 08:57

Hey Thomas,

danke für die schnelle Antwort. Ich denke dass hilft mir weiter.
Ich habe wohl die Funktion dayofmonth() gesucht, die mir den Tag (1-31)
eine Monats aus einem Datum ermittelt.

Ziel ist, alle Geburtstage eine Monats month(datum) zu selektieren und diese
nach dem Tag (des Monats) zu sortieren.

Dies sollte dann z.B. wie folgt möglich sein:
select name, geburtstag from tab_xxxx
where month(geburtstag) = 6
order by dayofmonth(geburtstag)

Wo kann ich solche Informationen über "SQL-Funktionen" finden?
In der Hilfe von OOo wurde z.B. mit dem Suchbegriff "month" oder "year" nichts gefunden.
Würde bei weiteren Fragen/Problemen dann erst mal eine solche Quelle durchstöbern.

Vielen Dank und Gruß,
Carsten

von Toxitom » Do, 22.02.2007 08:32

Hey Carsten,

intern werden Datumswerte als fortlaufende Zahl dargestellt, und zwar beginned bei einem Stichtag (30.12.1899) als vergangene Tage. Insofern sind die Tage bereits geordnet. Daher gibt es keine "Tag"-Funktion.
Leider weiss ich nicht, was exakt du erreichen willst, üblicherweise aber sortierst du Datumswerte einfach mit DAYOFYEAR(), das liefert dir die Zahlen 1-365. In der Abfrage erzeugst du eine zusätzliche Spalte mit diesen Wert (kann auch versteckt sein) und sortierst aufsteigend - jetzt sind alle deine Datumswerte entsprechend dem Jahresablauf geordnet.
Suchst du soetwas?
Ansosnten liefert dir die Funktion DAYOFMONTH() den Tag des Monats als Zahl (1-31). Beiden Funktionen übergibst du den Datumswert.

Gruss
Thomas

Mit Abfrage nach Tag (1 - 31) eines Datumfeldes sortieren

von althoffc » Mi, 21.02.2007 20:14

Hallo,
ich möchte ein Datumsfeld (DATE, dd-mm-yyy) nach Monat, Tag sortieren.

Dazu greife ich mit month(datum) auf den Monat (1- 12) des Datumfeldes zu.
Ebenso funktioniert auch das Auswerten der Jahreszahl mit year(datum).

Ich habe bisher aber vergeblich eine entsprechende Abfrage für den Tag
eines Datums (1 - 31) hinbekommen.
Mit dayname(datum) erhalte ich die Namen der Wochentage, was ich aber
nicht benötige.
Wenn ich day(datum) einsetze, erhalte ich einen Syntaxfehler.

Kennt jemand eine entsprechende Funktion, mit welcher der Tag (1 - 31)
eines Datumfeldes ermittelt werden kann?

Danke und Gruß,
Carsten

Nach oben