Datum Berechnen

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

  • Datum Berechnen

    hi und Tach alle zusammem!

    Habe folgende Frage...

    möchte in einer datenbank eine Tabelle mit mehreren Einträgen
    anlegen,unter anderem ,,Von''(Datum)..,,Bis"(Datum).Wenn ich zb.Von 01.01.2002 und Bis 04.01.2002 eingebe ,sollen mir die
    Daten des Eintrages vom 01.01-04.01.nicht angezeigt werden,
    erst wieder ab 05.01.2002.

    Wer kann mir einen Tip geben wie ich das angehen könnte

    Danke jetzt schon

    jenne

  • #2
    SELECT * FROM tbl WHERE datum1 < '$datum1' AND datum2 > '$datum2'

    in Deinem Beispiel ist $datum1 = 2002-01-01 und $datum2 = 2002-01-04, Du musst das Datum noch in das MySQL Format (yyyy-mm-dd)bringen.
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      Oder mit dem Befehl BETWEEN gehts noch einfacher!

      Kommentar


      • #4
        viel einfacher waers wenn du einfach en unix timestamp benutzt ... (geht natuerlich nur wenn das datum nicht vor dem 01.01.1970 liegt)

        MfG Tweaker

        Kommentar


        • #5
          Datum Berechnen

          Hallo Mello Pie

          ich habe es folgendermaßen versucht..

          $vn = "Von";
          $bs = "Bis";

          $res = mysql_db_query("Test", "SELECT * FROM datum WHERE Von < '$vn' AND Bis > '$bs'");

          In der mysql tabelle habe ich spalten ,,Von" und ,,Bis" mit date vergeben.Als Ausgabe bekomme ich nur den Tabellenkopf aber
          ohne Datensätze!

          jenne

          Kommentar


          • #6
            1) Sind Datensätze da?
            2) Sind die auch 2002-01-21 da rein geschrieben? (geht das überhaupt anders )

            Kommentar


            • #7
              Datum Berechnen

              Hi

              Datensätze sind vorhanden ,bei (select from datum) bekomme ich alle angezeigt einschließlich datum Von..datum Bis!

              jenne

              Kommentar


              • #8
                kannst du mal eine zeile hier rein kopieren

                Kommentar


                • #9
                  Datum Berechnen

                  welche zeile???

                  <html>
                  <body>
                  <?php
                  include("../inc/usererror.php");
                  $benutzer="";
                  $kennwort="";
                  $host="localhost";
                  $db="Test";
                  $db = mysql_connect($host,$benutzer,$kennwort);

                  $vn = "Von";
                  $bs = "Bis";
                  $res = mysql_db_query("Test", "SELECT * FROM datum WHERE Von < '$vn' AND Bis > '$bs'");

                  $num = mysql_num_rows($res);

                  // Tabellenbeginn
                  echo "<table border>";

                  // Überschrift
                  echo "<tr> <td>Nummer</td> <td>Firma</td>";
                  echo "<td>Ort</td> <td>Von</td>";
                  echo "<td>Bis</td> <td>Besetzt</td> </tr>";

                  for ($i=0; $i<$num; $i++)
                  {
                  //$nr = mysql_result($res, $i, "Nummer");
                  $fi = mysql_result($res, $i, "Firma");
                  $or = mysql_result($res, $i, "Ort");
                  $vn = mysql_result($res, $i, "Von");
                  $bs = mysql_result($res, $i, "Bis");
                  $be = mysql_result($res, $i, "Besetzt");
                  $nr = $i + 1;

                  // Tabellenzeile mit -zellen
                  echo "<tr> <td>$nr</td> <td>$fi</td> <td>$or</td>";
                  echo "<td>$vn</td> <td>$bs</td> <td>$be</td> </tr>";
                  }

                  // Tabellenende
                  echo "</table>";

                  mysql_close($db);
                  ?>
                  </body>
                  </html>

                  CREATE TABLE datum (
                  Nummer int(2) NOT NULL default '0',
                  Firma varchar(40) NOT NULL default '',
                  Ort varchar(40) NOT NULL default '',
                  Von date default NULL,
                  Bis date default NULL,
                  Besetzt varchar(5) NOT NULL default '',
                  PRIMARY KEY (Nummer)
                  ) TYPE=MyISAM;

                  #
                  # Daten für Tabelle `datum`
                  #

                  INSERT INTO datum VALUES ( '0', 'Hausbau', 'Dorf', '2014-01-20', '2014-02-20', 'Ja');
                  INSERT INTO datum VALUES ( '1', 'Karl Napf', 'Dorf2', '2015-07-20', '2019-08-20', 'Nein');
                  INSERT INTO datum VALUES ( '2', 'Schrott AG', 'Dorf3', '2022-08-20', '2017-09-20', 'JA');

                  jenne

                  Kommentar


                  • #10
                    Hmm, so im überflug sieht das eigentlich korrekt aus

                    Kommentar


                    • #11
                      Original geschrieben von TobiaZ
                      Hmm, so im überflug sieht das eigentlich korrekt aus
                      Original geschrieben von jenne
                      $vn = "Von";
                      $bs = "Bis";
                      $res = mysql_db_query("Test", "SELECT * FROM datum WHERE Von < '$vn' AND Bis > '$bs'");
                      find ich eher nicht ... kein Datum ist größer als der String 'Bis' - ergo ist die Ergebnismenge auch leer. Probier´s mal so:

                      $vn = '2002-01-01';
                      $bs = '2002-04-01';
                      mein Sport: mein Frühstück: meine Arbeit:

                      Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                      Kommentar


                      • #12
                        Ich hatte jetzt nur auf Code geachtet. Welche Werte da eingesetzt wurden hab ich außen vor gelassen.

                        Du meinst mit Sting "Bis" wirklich das Wort "Bis", oder? Dann wäre "Von" ja auch falsch. Aber die wurden doch bestimmt ersetzt.

                        Ich glab ich steh aufm Schlauch. Was war denn hier nochmal der sinn, der ist mir noch nie ganz klar geworden, oder er ist wirklich komisch.
                        Erklär mir bitte einer das erste Post!

                        Kommentar


                        • #13
                          Original geschrieben von TobiaZ
                          Du meinst mit Sting "Bis" wirklich das Wort "Bis", oder? Dann wäre "Von" ja auch falsch. Aber die wurden doch bestimmt ersetzt.
                          1. Genau!
                          2. Auch richtig, aber '2002' ist kleiner als 'Von'; die Bedingung trifft also auf jeden Datensatz zu. mySQL-Daten werden wie Strings verglichen.
                          3. Davon sollte man nicht ausgehen ... ich hab hier schon die seltsamsten Fehler erlebt.
                          mein Sport: mein Frühstück: meine Arbeit:

                          Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                          Kommentar


                          • #14
                            Datum Berechnen

                            Original geschrieben von TobiaZ

                            Ich glab ich steh aufm Schlauch. Was war denn hier nochmal der sinn, der ist mir noch nie ganz klar geworden, oder er ist wirklich komisch
                            --------------------------------------------------------------------------------

                            Hallo alle zusammen!

                            Der Sinn war(ist!) wenn das aktuelle Datum im Zeitraum
                            Von $vn und Bis $bs liegt sollen die Daten dieser Zeile nicht
                            ausgegeben werden.

                            jenne

                            Kommentar


                            • #15
                              Re: Datum Berechnen

                              Original geschrieben von jenne
                              Der Sinn war(ist!) wenn das aktuelle Datum im Zeitraum
                              Von $vn und Bis $bs liegt sollen die Daten dieser Zeile nicht
                              ausgegeben werden.
                              $vn und $bs sollten gültige ISO-Daten sein (also im Format yyyy-mm-dd), sonst hat das alles keinen Sinn
                              und die Bedingung für die Where-Klausel die du für obiges brauchst ist not now() between Von and Bis

                              aber vermutlich bin ich hier auch verwirrt ...
                              denn du erwähnst im ersten Post zwei Datumsfelder Von und Bis und zwei Eingaben $vn und $bs.
                              Darum mal am Beispiel: Angenommen ich habe folgende Daten in der DB
                              a) Von='2002-03-30' Bis='2002-03-31'
                              b) Von='2002-03-31' Bis='2002-04-01'
                              c) Von='2002-03-31' Bis='2002-04-02'
                              d) Von='2002-04-02' Bis='2002-04-03'
                              e) Von='2002-04-03' Bis='2002-04-05'
                              f) Von='2002-03-04' Bis='2002-04-05'
                              g) Von='2002-04-05' Bis='2002-04-07'
                              und ich gebe den 1. und 4. April als $vn un $bs an - welche Daten sollen dann angezeigt werden? a und g?
                              Dann gilt diese Where-Klausel: "... where Bis<'$vn' or Von>'$bs'"

                              Wenn nicht, dann liste mir die Buchstaben der Einträge auf, die angezeigt werden sollen.
                              mein Sport: mein Frühstück: meine Arbeit:

                              Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                              Kommentar

                              Lädt...
                              X