Datumsfunktionen in PHP und MySQL

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Datumsfunktionen in PHP und MySQL

    hallo!

    ich kämpf grad mal wieder mit den datumsfunktionen und wär sehr froh um einen tipp!

    aaalso... sagen wir mal, ich hab zwei variablen, die mir via formular übergeben wurden: $monat (z.B. 8) und $tag (z.B. 15). ich möchte nun eine sql-abfrage machen, die mir alle einträge ausgibt, die nach $monat und $tag liegen, unabhängig vom jahr. also in meinem beispiel alle einträge mit einem datum vom 16. august bis 31. dezember von jedem jahr. das datum in der mysql-tabelle ist vom typ datetime.

    ich hab schon einiges probiert:
    wenn ich nur den monat mit einbeziehe und alle einträge ab september möchte, schreib ich einfach select ... where MONTH (datumsfeld) > $monat. klappt perfekt.

    aber eben, der tag sollte ja auch noch mit rein. ich hab mir gedacht, ich könnte vielleicht die funktion DAYOFYEAR verwenden. also in der art: select ... where DAYOFYEAR (datumsfeld) > $nr_tag_jahr. aber wie bekomm ich mit php raus, welcher tag des jahres z.b. der 15. august ist (also der inhalt der variablen $nr_tag_jahr)???

    bin froh um jeden tipp. vielleicht gibt's ja auch ne gaaaanz einfach lösung und ich hab mir mal wieder umsonst das gehirn zermartert...

    danke im voraus und lg
    michele
  • danke für deine antwort, d0nUt

    hm... aber DAYOFMONTH bringt mir doch nur etwas, wenn ich z.b. alle einträge suchen möchte, deren monatstag > 10 sind. aber ich möchte ja auch noch den monat mit einbeziehen.

    beispiel:
    $monat = 8
    $tag = 15

    ich möchte nun alle einträge auswählen, deren datetime-wert in der datums-spalte > als der 15. august sind. also sollten z.b. 2003-8-16, 2005-10-30 und 2005-12-2 gewählt werden; 2003-4-15 und 2006-3-29 aber nicht.

    ich hoffe, ich steh nicht auf der leitung...

    danke und lg
    michele
  • "michele" schrieb:

    ich hoffe, ich steh nicht auf der leitung...


    ne, hab das problem jetzt erst so richtig verstanden.
    dann warst du mit DAYOFYEAR nahe dran.. hättest den befehl 2x mit MySQL anwenden können (ganz ohne PHP)

    SELECT * FROM x WHERE DAYOFYEAR(spalte) > DAYOFYEAR('2006-07-01');

    einziges problem.. hier werden 2 integerwerte vergleichen
    also nur if(300 > 30)
    wenn du also mehrere jahre hast, bleibt ein problem

    Also bedeinen wir uns nun der Funktion TO_DAYS
    TO_DAYS(datum)

    Gibt für ein Datum datum eine Tagesanzahl zurück (die Anzahl von Tagen seit dem Jahr 0):

    select TO_DAYS('1997-10-07');
    -> 729669


    Lösung: (???)

    Quellcode

    1. SELECT * FROM x WHERE TODAYS(spalte) > TODAYS('2006-07-01');
  • das hier
    SELECT * FROM x WHERE DAYOFYEAR(spalte) > DAYOFYEAR('2006-07-01');


    ist praktisch perfekt! danke!!

    bei der funktion TO_DAYS versteh ich nicht, warum diese funktion besser sein soll. ich hab das jahr ja eben NICHT.

    bin jetzt nicht ganz sicher, ob ich etwas von deinen ausführungen nicht verstanden habe, oder ob ich nicht klar beschreiben konnte, was ich gern möchte, aber dein erster tipp hilft mir wirklich weiter.

    danke und lg
    michele