Geburtstag - welches Format in MySQL?!
Geburtstag - welches Format in MySQL?!
Hallo,
nachdem es für phpBB bereits 4 verschiedene Formate an Birthday Mods gibt, frage ich mich, welches Format oder welche Form der Speicherung eigentlich die sinnvollste ist?
In meinem Fall geht es um Geburtstage von Stars. Später möchte ich filtern nach Geburtsjahr (wer ist alles 1980 geboren?) und nach Tag/Monat (wer ist alles am 1. Januar geboren?).
Bei der Eingabe macht man ja der Einfachheit halber drei Dropdowns oder drei Eingabefelder:
Tag | Monat | Jahr
oder einfacher:
dd|mm|yyyy
Jetzt könnte ich diese Daten als MEDIUMINT speichern:
ddmmyyyy
Aber dann ist das mit dem Filter nicht so schick. Dann eher jeden Wert einzeln?
dd TINYINT
mm TINYINT
yyyy SMALLINT
Oder ein Feld im Format DATE?
Oder gar als UNIX Timestamp?
Welche Filterung sollte ich noch berücksichtigen bzw. vielleicht noch irgendwas bei der "normalen" Ausgabe? (z.b. alles einzeln plus UNIX um, dann den Geburtstag mit date() ausgeben zu können)
Gruß
nachdem es für phpBB bereits 4 verschiedene Formate an Birthday Mods gibt, frage ich mich, welches Format oder welche Form der Speicherung eigentlich die sinnvollste ist?
In meinem Fall geht es um Geburtstage von Stars. Später möchte ich filtern nach Geburtsjahr (wer ist alles 1980 geboren?) und nach Tag/Monat (wer ist alles am 1. Januar geboren?).
Bei der Eingabe macht man ja der Einfachheit halber drei Dropdowns oder drei Eingabefelder:
Tag | Monat | Jahr
oder einfacher:
dd|mm|yyyy
Jetzt könnte ich diese Daten als MEDIUMINT speichern:
ddmmyyyy
Aber dann ist das mit dem Filter nicht so schick. Dann eher jeden Wert einzeln?
dd TINYINT
mm TINYINT
yyyy SMALLINT
Oder ein Feld im Format DATE?
Oder gar als UNIX Timestamp?
Welche Filterung sollte ich noch berücksichtigen bzw. vielleicht noch irgendwas bei der "normalen" Ausgabe? (z.b. alles einzeln plus UNIX um, dann den Geburtstag mit date() ausgeben zu können)
Gruß
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Das beste ist der UNIX Timestamp.
dann kannst Du alles einzelnd herauspicken mit der "create_date" Funktion.
Beispiel:
dann kannst Du alles einzelnd herauspicken mit der "create_date" Funktion.
Beispiel:
Code: Alles auswählen
$b_day = create_date('j', $timestamp, $board_config['board_timezone']);
$b_month = create_date('n', $timestamp, $board_config['board_timezone']);
$b_year = create_date('Y', $timestamp, $board_config['board_timezone']);
$b_hour = create_date('G', $timestamp, $board_config['board_timezone']);
$b_minute = create_date('i', $timestamp, $board_config['board_timezone']);
$b_second = create_date('s', $timestamp, $board_config['board_timezone']);
Und wie filtere ich dann bei der mysql Abfrage nach ddmm?
yyyy wäre ja keine Sache, da man nur zwischen X und Y suchen lassen muss. Aber bei ddmm wüsste ich jetzt keine praktikable Lösung.
Gruß
yyyy wäre ja keine Sache, da man nur zwischen X und Y suchen lassen muss. Aber bei ddmm wüsste ich jetzt keine praktikable Lösung.
Gruß
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
- nickvergessen
- Ehrenadmin
- Beiträge: 11559
- Registriert: 09.10.2006 21:56
- Wohnort: Stuttgart, Germany
- Kontaktdaten:
Re: Geburtstag - welches Format in MySQL?!
Du kannst ja die Variable auf dem Abschnitt von 1-2 3-4 udn 5-8 untersuchen lassen. Dann sollte das auch kein Problem sein.mgutt hat geschrieben:Jetzt könnte ich diese Daten als MEDIUMINT speichern:
ddmmyyyy
Aber dann ist das mit dem Filter nicht so schick. Dann eher jeden Wert einzeln?
kein Support per PN
In der MySQL Abfrage?
Ich plane mehrere tausend Einträge, daher muss die Filterung schon bei der Abfrage passieren.
Ich plane mehrere tausend Einträge, daher muss die Filterung schon bei der Abfrage passieren.
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Re: Geburtstag - welches Format in MySQL?!
Also wenns um schnelle Abfragen und noch dazu um Geburtstage (vor 1970?) geht, dann kann so eine Spalte vommgutt hat geschrieben:Oder ein Feld im Format DATE?
Typ DATE (YYYY-MM-DD) schon ein ziemlicher Vorteil sein gegenüber TIMESTAMP (begrenzt auf 1970 bis 2037)
Hier gibts paar interessante Beispiele dazu:
http://dev.mysql.com/doc/refman/5.1/de/ ... tions.html
- Jan500
- Ehemaliges Teammitglied
- Beiträge: 4199
- Registriert: 01.03.2003 21:32
- Wohnort: Hamburg
- Kontaktdaten:
wenn das ein unix pc server ist sollte es beim timestamp eigentlich auch keine probleme geben... der gibt dann negative timestamps bei < 1970 aus...
bei windows macht der afaik nen error
Jan
bei windows macht der afaik nen error
Jan
"Life begins at 40 Knots...!" 
kein (kostenlosen) Support per pn, mail, icq usw. | Kostenlosen Support gibt es hier im Forum!

kein (kostenlosen) Support per pn, mail, icq usw. | Kostenlosen Support gibt es hier im Forum!
Ja aber auch nur bei PHP4.
Ansonsten geht der Timestamp auch ins Minus.
Also ich habe es jetzt erstmal so gewählt, dass ich den UNIX Timestamp, Tag, Monat und Jahr in der Datenbank habe. Also insgesamt vier Felder.
Wobei MONTH() in der MySQL-Abfrage auch interessant aussieht.
Ansonsten geht der Timestamp auch ins Minus.
Also ich habe es jetzt erstmal so gewählt, dass ich den UNIX Timestamp, Tag, Monat und Jahr in der Datenbank habe. Also insgesamt vier Felder.
Wobei MONTH() in der MySQL-Abfrage auch interessant aussieht.

meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it