moin, moin!
Bin grad die MySQL Doku date-and-time-functions durch,
und finde diese ganzen ADD_DATE und CURDATE und INTERVAL Sachen recht nett,
aber vor allem sehr verwirrend.
Alle MySQL Geeks versichern mir irgendwie,
dass diese Funktionen angeblich viel besser seien wenn man zum Beispiel
wissen möchte welche Einträge innerhalb der letzten 30 Tage entstanden sind,
und ich mit INTERVAL nur 30 DAYS angeben muss.
Dennoch ist mir das ganze recht unheimlich,
und hat einfach eine viel zu breite Masse an Befehlen
für eine so simple sache wie Daten.
Auch das DATE_FORMAT ist eine nette Sache,
aber auch wieder unnötig kompliziert.
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-
Ich dachte mir am einfachsten ist immer noch der UNIX Timestamp.
Da kann ich ganz einfach vergleichen zwischen zwei UNIX Timestamps,
die entsprechenden Sekunden abziehen oder dazuzählen,
und das Ausgabeformat bestimmt man auch ganz einfach.
Ich bin und bleibe einfach ein Unix Timestamp Fan,
auch wenn die MySQL Geeks mich dafür schimpfen *g*
Bevor ich nun aber den UNIX Timestamp in einem VARCHAR Feld abspeichere,
dachte ich mir dass es dafür vielleicht ein eigenes Feld gibt in MySQL.
Dann könnte ich vielleicht auch mit NOW() den aktuellen Timestamp reinbekommen.
Beim auslesen arbeite ich dann wieder mit Timestamp.
Extra noch eine zusätzliche Frage:
Ist Perl langsamer wenn es den UNIX Timestamp aus der DB bekommt,
und den pro Eintrag erst umrechnen muss,
oder ist es langsamer wenn MySQL die Umrechnung macht mit INTERVAL mal abziehen
und dann mit DATE_FORMAT als irgendwas selectieren?
Der Syntax von INTERVAL ist mir nämlich suspekt.
Die verwenden bei der Deutschen Doku einen komplett anderen als bei der Englischen.
MySQL Doku Deutsch:
***********************
Hier ist ein Beispiel, das Datums-Funktionen benutzt. Die unten
stehende Anfrage wählt alle Datensätze mit einem datum_spalte-Wert
innerhalb der letzten 30 Tage aus:
mysql> SELECT etwas FROM tabelle
WHERE TO_DAYS(NOW()) - TO_DAYS(datum_spalte) <= 30;
MySQL Doku Englisch:
***********************
Here is an example that uses date functions. The following query
selects all records with a date_col value from within the last 30 days:
mysql> SELECT something FROM tbl_name
-> WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= date_col;
Also irgendwie weiß ich nicht wie ich mit dem Thema "Zeit" umgehen soll in MySQL.
Wie macht ihr das?
ich trage sorge wenn ich mit localtime(time) alles mache und in Perl
erreichne, dass das dann viel langsamer ist als in MySQL
mit INTERVAL und DATE_FORMAT zur schönen Ausgabe.
Viel blabla und keiner kennt sich aus, gelle? *hihi*
Danke auf jeden fall mal
Es grüßt
Nebula