SQL: Anzahl der Tage eines Jahres ermitteln

Aus DBWiki
Wechseln zu: Navigation, Suche

Zurück zur Übersicht



Die Aufgabe lässt sich leicht lösen, indem man zum 1. Januar des Jahres ein Jahr hinzu addiert, und davon den 1. Januar des Jahres subtrahiert.

Lösung für Jet-SQL

Als Ausgangsbasis verwenden wir folgende Abfrage vw_jahr mit Jahreswerten, von der wir wissen wollen, ob das Jahr ein Schaltjahr ist.

SELECT 1900 AS jahr FROM dual
UNION  ALL
SELECT 1901 FROM dual
UNION  ALL
SELECT 2000 FROM dual
UNION  ALL
SELECT 2004 FROM dual
UNION  ALL
SELECT Year(Date()) FROM dual
SELECT jahr, DateSerial( jahr + 1, 1, 1) - DateSerial( jahr, 1, 1 ) AS tage_im_jahr
FROM   vw_jahr

Lösung für PostgreSQL

CREATE VIEW vw_jahr ( jahr ) AS (
    VALUES (1900), (1901), (2000), (2004), (date_part( 'year', CURRENT_DATE )) );
 
SELECT jahr,
       make_date( jahr::INTEGER + 1, 1, 1 )
     - make_date( jahr::INTEGER, 1, 1 ) AS tage_im_jahr
FROM   vw_jahr
jahr tage_im_jahr
1900 365
1901 365
2000 366
2004 366
2018 365



Zurück zur Übersicht