Ankündigung

Einklappen
Keine Ankündigung bisher.

Datum umschreiben

Einklappen

Neue Werbung 2019

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

  • Datum umschreiben

    Hallo an Alle,

    ich möchte aus einer Datenbank Nur Datensätze abrufen die mindestens "Gestern" oder älter sind.
    In der Datenbank liegt das Datum in folgendem Format vor: 14.09.2010

    Zum Vergleich hab ich das aktuelle Datum im gleichen Format in $date1 vorliegen.

    Nun habe ich probiert beim Aufruf aus der Datenbank es wie folgt zu selektieren:

    PHP-Code:
    $result=mysql_query("SELECT * FROM $tabelle
                    WHERE Tag < 
    $date1 ORDER BY ID DESC"); 
    Okay, ich weiß mittlerweile es war falsch, da das Datum so nicht vergleichbar ist.

    Hat jemand eine Idee wie ich das hin bekomme?

    Danke schon mal im Voraus.....


  • #2
    Benutze den Feldtyp date und das amerikanische Datumsformat YYYY-MM-DD (bzw. das date()-format 'Y-m-d') dann sind die vergleiche problemlos möglich.
    Zur ausgabe kannst Du das Datumsformat ja problemlos wieder umwandeln.

    Kommentar


    • #3
      Zitat von doc36 Beitrag anzeigen
      Hat jemand eine Idee wie ich das hin bekomme?
      Ändere das Datum in ein vernünftiges Format.

      Kommentar


      • #4
        Das ist schonmal der falsche Feldtyp fürs Datum. Du hast wahrscheinlich char oder varchar für das Datumsfeld genommen. Dafür gibt es aber den Feldtyp DATE, damit kannst du dann auch ganz bequem mit den Vergleichoperatoren selektieren.

        PHP-Code:
        "SELECT * FROM tbl WHERE date < '2010-09-15' ORDER BY date DESC" 
        Wenn du den Feldtyp nicht mehr ändern kannst, wird es komplizierter. Dann musst du innerhalb der Abfrage den Inhalt des Feldes erstmal in das richtige Datumsformat umformen.

        Kommentar


        • #5
          Danke für die schnellen Antworten.....

          Es lässt sich nicht mehr ändern und muss die Gegebenheiten so nehmen.

          Also bleibt mir nur der Weg es zu wandeln und habe dazu folgendes um den Wert aus $date1 zu wandeln:

          PHP-Code:
          ereg ("([0-9]{1,2}).([0-9]{1,2}).([0-9]{4})"$date1$regs);
          $date2=$regs[1]$regs[2]$regs[3]; 
          Irgendwie will das nicht so, Denkfehler bei mir???

          Kann ich so auch in der Abfrage der Datenbank das Datum ändern um Beide dann vergleichen zu können?

          Kommentar


          • #6
            http://php.net/manual/de/language.operators.string.php

            [MAN]explode[/MAN] macht dir die Arbeit noch etwas leichter. Dazu brauchst du keinen regulären Ausdruck.
            http://hallophp.de

            Kommentar


            • #7
              Hallo Asipak,

              ohne Frage mit explode schöner und funktioniert 100% das Datum aus $date1 zu wandeln für den Vergleich.

              Wie kann ich das in meine Abfrage unter bekommen, so das 'Tag' gewandelt wird um dann mit dem bereits gewandeltem Datum in $date2 zu vergleichen?

              PHP-Code:
              $result=mysql_query("SELECT * FROM $tabelle WHERE Tag < $date2 ORDER BY ID DESC"); 

              Kommentar


              • #8
                Wenn deine Daten so eingetragen sind: 08.07.2010:

                SELECT datum FROM tbl
                WHERE concat( SUBSTRING(datum,7,4),SUBSTRING(datum,4,2),SUBSTRIN G(datum,1,2) ) < '20100831'

                Besser:
                neue Spalte mit date-Format erfinden, das komische Datum da reinpacken, Scripte ändern, spalte mit komischem datum löschen und ordentlich mit DATE_FORMAT selektieren.
                PHP-Code:
                if ($var != 0) {
                  
                $var 0;

                Kommentar


                • #9
                  Das geht durchaus direkt in MySQL:

                  Code:
                  SELECT * FROM $tabelle WHERE STR_TO_DATE(Tag,'%d.%m.%Y') < $date
                  Wobei $date im MySQL Format 'Y-m-d' vorliegen muss.

                  @Wolla: Guck, CONCAT und SUBSTRING muss nicht sein Refactoring wäre natürlich fraglos der eleganteste Weg.
                  @fschmengler - @fschmengler - @schmengler
                  PHP Blog - Magento Entwicklung - CSS Ribbon Generator

                  Kommentar


                  • #10
                    Hey super, STR_TO_DATE kannte ich noch nicht - braucht man wohl nur bei solch exotischen Tabellenstrukturen.
                    PHP-Code:
                    if ($var != 0) {
                      
                    $var 0;

                    Kommentar


                    • #11
                      @fab

                      PERFEKT!! Super danke, genau das haut hin

                      @Wolla

                      Exotisch? Kennst mich nicht, eher alles kaotisch Auch dir Danke, wenn auch mit der Lösung von fab umgesetzt.

                      Kommentar


                      • #12
                        Zitat von doc36 Beitrag anzeigen
                        Exotisch? Kennst mich nicht, eher alles kaotisch
                        Der auf isch endende Begriff dafür, ein Datum als String zu speichern, fängt mit i... an.

                        Und das „kann man nicht mehr ändern“ bedeutet vermutlich nur, dass du keine Lust darauf hast?
                        Dann wirst du in Zukunft schnell weitere Probleme damit bekommen, und eventuell sogar solche, die sich nicht so leicht umgehen lassen.

                        Kommentar


                        • #13
                          Da andere Scripts auch auf die Datenbank zugreifen, wo ich keine Berechtigung habe etwas zu ändern, ist meine Aussage nicht unbedingt als Faulheit zu sehen.

                          Ändere ich die Datenbank inkl. Daten bekommen Andere Probleme was nicht Sinn und Zweck ist, zumal das Problem super durch den Tip von fab gelöst wurde.

                          Hey, und idiotisch seh ich erstmal als Kompliment

                          Kommentar


                          • #14
                            Dann schreib eine Art Adapter, der die Daten für die anderen Scripts entsprechend nach der alten Formatierung behandeln kann oder passe in den anderen Scripts die Routinen auf das korrekte Format an.
                            http://hallophp.de

                            Kommentar


                            • #15
                              Zitat von doc36 Beitrag anzeigen
                              Ändere ich die Datenbank inkl. Daten bekommen Andere Probleme was nicht Sinn und Zweck ist, zumal das Problem super durch den Tip von fab gelöst wurde.
                              Das Problem wurde nicht gelöst, sondern nur umgangen, besteht aber nach wie vor.

                              Kommentar

                              Lädt...
                              X