Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Probleme mit Datumsformat

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Probleme mit Datumsformat

    Hallo,
    leider komme ich beim Thema datum nicht mehr weiter.
    Ich habe folgenden query:
    PHP-Code:
    SELECT FROM `abwesenheitWHERE `datum` <= UNIX_TIMESTAMP(NOW()) AND `datum_end` >= UNIX_TIMESTAMP(NOW()) ORDER BY `datumDESC 
    Damit möchte ich sozusagen alle daten aus der db ausgeben, die am heutigen tag sind. Nun ist es aber so, dass der timestamp ja auch stunden, minuten, sekunden beinhaltet.
    Nun hab ich im Referenzhandbuch auch sowas wie DATE_FORMATE gefunden. Leider kann ich aber damit nicht wirklich was anfangen, da ich das aktuelle Datum und das datum aus der tabelle (welches sich im timestamp format befindet) ja erstmal auf ein gleiches niveau bringen muss.
    Kann mir da evtl. jemand weiterhelfen?

  • #2
    Hallo,

    Code:
    UNIX_TIMESTAMP(NOW())
    ist Dummfug, das NOW() ist überflüssig und überhaupt rechnet MySQL mit MySQL-Timestamps sogar besser als mit UNIX-Timestamps. Und wieso hast du `datum` und `datum_end`?
    Versuche es mal so:
    Code:
    SELECT * FROM `abwesenheit` WHERE `datum` LIKE CURDATE() + '%' ORDER BY `datum` DESC;
    oder:
    Code:
    SELECT * FROM `abwesenheit` WHERE DATE(`datum`) = CURDATE() ORDER BY `datum` DESC;

    Kommentar


    • #3
      Mit welchem Format hast du die Spalte in der Tabelle definiert?

      Kommentar


      • #4
        Leider funktionieren die zwei varianten von manko10 auch nicht.
        Es ist ein kleines simples Script, wo sich ein User von ... bis ... abwesend melden kann, daher einmal die spalte datum und datum_end.
        Ich mochte nun halt wie gesagt alle einträge ausgeben, wo der user momentan abwesend ist.
        Die datumsfelder habe ich in der db mit int definiert und trage dort den timestamp ein.

        Kommentar


        • #5
          Dann mache es so:
          Code:
          SELECT * FROM `abwesenheit` WHERE DATE(`datum`) >= CURDATE() AND DATE(`datum_end`) <= CURDATE() ORDER BY `datum` DESC;
          Und stelle zudem sicher, dass das Feld wirklich vom Typ DATETIME ist.

          Kommentar


          • #6
            ich bin fast der meinung, dass es daran liegt, dass das feld nicht vom typ datetime ist, sondern nur ein normales int-feld wo der timestamp eingetragen wird ... dachte das könnte man auch so lösen

            Kommentar


            • #7
              Ach, du hast kein DATETIME-Feld? Wieso das denn nicht? Mit einem INT-Feld musst du auf sämtliche Datumsfunktionen verzichten oder Umwege wie diesen gehen:
              Code:
              SELECT * FROM `abwesenheit` WHERE FROM_UNIXTIME(`datum`, '%Y-%m-%d') >= CURDATE() AND FROM_UNIXTIME(`datum_end`, '%Y-%m-%d') <= CURDATE() ORDER BY `datum` DESC;

              Kommentar


              • #8
                Danke, genau das hab ich gesucht ... die formatierung stimmte zwar noch nicht ganz, aber das hab ich geändert.
                Ich hatte bisher immer nur mit nem int-feld gearbeitet, da war es jetzt eher die gewohnheit, dass auch wieder so zu machen. Aber danke für die Hilfe.

                Kommentar


                • #9
                  Dann den Thread bitte noch als [Erledigt] markieren. Danke!

                  Kommentar


                  • #10
                    Da war sie wieder, die "aber-trotzdem-danke"-Antwort. In meinen Ohren klingt das immer so:

                    Ich habe das bisher immer anders gemacht und werde das aus Bequemlichkeit auch nicht ändern. Deshalb nützt mir Deine Antwort auch eigentlich überhaupt nichts. Was ich als Antwort erwartet habe, weiß ich eigentlich selbst nicht so genau. Schade um Deine Mühen, aber naja. Trotzdem danke.

                    Kommentar

                    Lädt...
                    X