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

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

althoffc
**
Beiträge: 32
Registriert: Do, 04.05.2006 17:20
Wohnort: Konstanz

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

Beitrag von althoffc »

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
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

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
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
althoffc
**
Beiträge: 32
Registriert: Do, 04.05.2006 17:20
Wohnort: Konstanz

Beitrag von althoffc »

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
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

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
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
althoffc
**
Beiträge: 32
Registriert: Do, 04.05.2006 17:20
Wohnort: Konstanz

Beitrag von althoffc »

Hallo Thomas,

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