Zeitvertreib mit Datumsfunktionen

Lehrer/innen-Info zum Thema Datumsfunktionen

Diese Unterrichtseinheit ist ausgerichtet am Bildungsplan der Beruflichen Gymnasien Baden-Württemberg, Jahrgangsstufe 1. Dort werden explizit die Datumsfunktionen MONTH() und YEAR() erwartet.

SQLite (was wir hier ja benutzen) verarbeitet Datumstypen nur mit strftime. Wenn jemand ins schriftliche Abi geht, sollte man MONTH() und YEAR() zumindest einmal gesehen haben. Meistens lassen sich diese beiden Funktionen ja durch Abfragekonstruktionen mit LIKE einfach ersetzen.

Unterrichtsgang

Wir lesen die Seite durch und erklären den Schüler/innen das Thema knapp anhand von Kowalskys Zettel. Das muss reichen, zumal wir vor dem Abi ja nochmal mit der MySQL Workbench üben, da kann man das nochmal kurz zeigen.

Toll, einen Espresso hat sie mir ausgegeben. Dann ist sie verschwunden und ich konnte ihn alleine trinken. *knirsch

*gähn

zzZ

Oh Mann, ist das langweilig hier. Vielleicht sollte ich mal bisschen an der Datenbank rumspielen ... Mal schauen, wer alles im gleichen Jahr wie ich geboren ist.

*tuuuuuut* ... *tuuuuuut* ... *tuuuuuut* ... *tuuuuuut* ... *tuuuuuut* ...

Was ist denn jetzt schon wieder?

Hey, Kowalsky, ich will alle Leute rausfinden, die im gleichen Jahr wie ich geboren sind. Wie geht das?

Ist dir langweilig???

(nuschelt) Ne, ist wichtig, weil, ...

Das kannst du doch schon lange. Einfach where geburtsdatum like '1950%'. Und jetzt muss ich -

1950??? Ich bin 1994 geboren, und das weißt du genau. Aber hey, das mit dem LIKE, das ist so kompliziert ... Geht es nicht einfacher?

(genervt) Ich schick dir was, wenn du versprichst, mich heute nicht mehr anzurufen. *klack

Wie der sich immer anstellt ... Ah, da ist schon eine Mail von ihm. Fix ist er ja ... (druckt die Mail aus)

Datumsfunktionen

Du benutzt einfach die MONTH(...)- und YEAR(...)-Funktion. Das sieht dann bspw. so aus:

SELECT * FROM aufenthalte a
WHERE MONTH(a.datum) = 2;

Bekommst du alle Aufenthalte im Februar. Gleich geht es mit YEAR(…):

SELECT * FROM aufenthalte a
WHERE MONTH(a.datum) = 2 AND
YEAR(a.datum) = 2033;

In vielen Fällen kannst du das auch ohne Datumsfunktion mit LIKE machen. Statt

SELECT * FROM aufenthalte a
WHERE MONTH(a.datum) = 2;

schreibst du einfach

SELECT * FROM aufenthalte a
WHERE a.datum LIKE '%-02-%';

*rrriiinnnggggg*

WAS-IST-JETZT-SCHON-WIEDER????

Ich habe das ausprobiert, aber es funktioniert nicht!

Ach stimmt - du arbeitest ja mit SQLite. Month und Year funktionieren nur in anderen SQL-Dialekten wie MySQL oder MariaDB.

Und jetzt?? Ich wollte gerade schauen, wer alles im gleichen Jahr wie ich Geburtstag hat!

Reg dich ab und lies meine Zettel ganz. Das kannst du doch auch mit Like machen.

Stimmt eigentlich … Ok, ich versuch's mir zu merken. Danke.

Schon gut. *klack

(Smith legt die Beine hoch und gähnt herzhaft.)

Und überhaupt kann ich mich nicht die Bohne konzentrieren. Bin immer noch sauer auf Tiffany ... Erst lässt sie mich für sich arbeiten und dann -

*BUMM BUMM BUMM*