Kann man mit Datum arbeiten

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

  • Kann man mit Datum arbeiten

    Hallo zusammen

    Ich habe in einer DB ein Feld mit dem Datumsformat DD.MM.YYYY nun würde ich gerne nur die Daten anzeigen lassen welche im aktuellen datumsrange sind.
    Dies kann ich im Normalfall mit ....($datum_bd >= $aktuelles_datum_von && $datum_bd <= $aktuelles_datum_bis)

    Das will aber nicht so recht! Ich glaube es liegt am Format, das Date Format in der MYSQL kann ich in der DB ja nicht auf mein Format einstellen.

    Muss ich nun alle Datum in Unix timestamp umwandeln um die Zeitspanne zu erhalten? Ich würde es sehr gerne in der DB Abfrage machen können.

    Weis hier jemand bescheid? DAnke

  • #2
    Hi,

    MySQL :: MySQL 5.1 Referenzhandbuch :: 11.3.1 Die DATETIME-, DATE- und TIMESTAMP-Typen

    und für die Zeitspanne kannst du z.B.

    SQL BETWEEN - 1Keydata SQL-Tutorial

    nehmen.

    mfg streuner
    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
    der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.

    "Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"

    Kommentar


    • #3
      Mit BETWEEN bekomme ich die genau gleichen falschen Ergebnisse.

      z.Bsp:
      05.06.2012 DB

      Zeitspanne
      05.03.2012-10.03.2012

      Bei ... BETWEEN '$datum_von' and '$datum_bis'...

      Wird das Feld mit dem Bsp: Datum (05.06.2012 DB) angezeigt!

      Spielt es eine Rolle welchen Typ mein DB Feld hat? Jetzt ist es "text".

      Kommentar


      • #4
        Spielt es eine Rolle welchen Typ mein DB Feld hat? Jetzt ist es "text".
        Natürlich - siehe meinen ersten link! Nochmal ergänzend zum Verständnis:

        MySQL Tutorial - Date

        mfg streuner
        Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
        der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.

        "Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"

        Kommentar


        • #5
          Wie kann ich denn in der MYSQL das Format beim Type Date festlegen?

          Ich stehe da auf dem Schlauch.

          Am einfachsten wäre wenn ich zusätzlich ein Time-Stamp in die DB speichere und dann zwischen diesen Zahlen Between ausführe.
          Es wäre einfach schöner wenn es ohne gehen würde.
          Zuletzt geändert von sepp; 19.06.2012, 16:27.

          Kommentar


          • #6
            Zitat von sepp Beitrag anzeigen
            Wie kann ich denn in der MYSQL das Format beim Type Date festlegen?
            In der Datenbank gar nicht – höchstens bei der Ausgabe.

            Wie – siehe Manual, Datums- und Zeit-Funktionen.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Muss ich das den in der Abfrage oder nach der Abfrage machen?

              Ich bin nahe an der Verzweiflung, habe schon zuviele Stunden investiert....aber trotz Euren wertvollen Tipps komme ich nciht zu Ziel. Ist mehr ein gebastel und austesten - anstatt gezielt programmieren.

              Bitte Helft mir einwenig weiter.....
              Ich habe ein Datum
              von 01.01.2012
              bis 12.12.2013

              nun will ich die Abrage so, dass nur diese Daten mit dem Datum (03.03.2012) in der Tabelle welches innerhalb der beiden Datum von und bis liegen.

              Bitte helft einem verzweifelten Mann.
              Zuletzt geändert von sepp; 19.06.2012, 18:05.

              Kommentar


              • #8
                Halo Sepp,

                wie hier schon geschrieben wurde, funktionieren die MySQL Datums/Zeitfunktionen nur mit DATE und DATETIME Feldern.

                Warum speicherst du die in einem Text Feld im DD.MM.YY Format ? Gibt es dafür einen Grund ? Oder wäre es denkbar, hier DATE Felder zu verwenden und für die Ausgabe das Datum in das entsprechende Format zu konvertieren ?

                Gerade wenn du Vergleiche / Berechnungen / etc. machen möchtest, wäre das wohl die sinnvollste und performanteste Lösung.

                Nichts desto trotz kannst du Berechnungen auch mit den derzeitigen Feldern anstellen, indem du Sie vorher mit STR_TO_DATE konvertierst.

                Deine Query könnte dann in etwa so aussehen:

                Code:
                SELECT * FROM meinetabelle WHERE STR_TO_DATE(feldmitdatum, '%d.%m.%Y') BETWEEN STR_TO_DATE('05.04.2012', '%d.%m.%Y') AND STR_TO_DATE('10.04.2012', '%d.%m.%Y')
                Aber Ich kann dir nicht sagen ob die Konvertierung der Textelder in Datumsfelder wirklich schnell ist bei großen Datenmengen. Auch wirst du immer gezwungen sein, deine Daten irgendwie zu konvertieren. Von daher solltest du noch einmal nachdenken, ob ein DATE Feld nicht wirklich sinnvoller ist.

                Gruß Danny
                hostbar - Full Service Internet Agentur

                Kommentar


                • #9
                  Ja, da hast Du wohl recht...ich habe nun alles in mühsamer Kleinarbeit (alle Funktionen usw.) auf Date im Format YYYY-MM-DD zum speichern umgeschrieben.

                  Nun geht alles wie es soll!!!! Hätte mir einige Arbeit ersparen können wenn ich von Beginn weg richtig programmiert hätte! ;-) Danke

                  Kommentar

                  Lädt...
                  X