fritz85: Timestamp abfragen

Hallo....

habe eine Frage. wie kann ich sehen wie ein Timestamp aufgebaut ist..?

Ich habe z.B. folgenden: "1149682084"
Möchte eine Abfrage machen von heute bis letztes halbjahr

$datum_heute= mktime(0, 0, 0, date("m"), date("d"), date("Y"));
$datum_halbjahr = mktime(0, 0, 0, date("m")-6, date("d"), date("Y"));

SQL:.......WHERE erfasst BETWEEN '".$datum_heute."' and '".$datum_halbjahr."'........

leider bringt er mir kein ergebnis...???

gruss
fritz85

  1. Hi,

    habe eine Frage. wie kann ich sehen wie ein Timestamp aufgebaut ist..?

    Hae?

    Ich habe z.B. folgenden: "1149682084"

    Das waere wohl ein Unix Timestamp - der zaehlt die Sekunden seit dem 1.1.1970, UTC.

    Möchte eine Abfrage machen von heute bis letztes halbjahr

    Nutze einen der Datumstypen, den die Datenbank dir zur Verfuegung stellt, stattdessen, und wende darauf ihre Datumsfunktionen an.

    MfG ChrisB

    1. Hey

      Das waere wohl ein Unix Timestamp - der zaehlt die Sekunden seit dem 1.1.1970, UTC.

      Das heisst es nicht möglich dies abzufragen????

      1. Das heisst es nicht möglich dies abzufragen????

        Hallo,

        ob es nicht möglich ist das abzufragen kann ich dir jetzt auf die schnelle nicht sagen und ich möchte hier auch keine Falschen Informationen geben. Aber es dürfte in jedem Fall leichter sein die MySQL Zeitfunktionen zu nutzen was ChrisB glaube ich auch meinte.

      2. Hi,

        Das waere wohl ein Unix Timestamp - der zaehlt die Sekunden seit dem 1.1.1970, UTC.

        Das heisst es nicht möglich dies abzufragen????

        Doch ... aber es ist wirklich keine gute Idee, Unix Timestamps in der DB zu speichern.

        Nutze einen der Datentypen, den dir das DBMS anbietet.

        MfG ChrisB

        1. hi,

          Nutze einen der Datentypen, den dir das DBMS anbietet.

          Ich verstehe nicht genau was du meinst. Also wie ich das nun machen soll mit der Abfrage????

          1. Ich verstehe nicht genau was du meinst. Also wie ich das nun machen soll mit der Abfrage????

            Guck dir das an, dort steht alles was du wissen musst:
            http://dev.mysql.com/doc/refman/5.1/de/date-and-time-functions.html

            1. Guck dir das an, dort steht alles was du wissen musst:
              http://dev.mysql.com/doc/refman/5.1/de/date-and-time-functions.html

              hab das gerade angeschaut.. jedoch ist meine neue abfrag eohne erfolg:

              $datum_heute= date("Y")."-".date("m")."-".date("d")." ".date("H").":".date("i").":".date("s");
              $datum_halbjahr = date("Y")."-".date("m")-6."-".date("d")." ".date("H").":".date("i").":".date("s");
              ....AND erfasst BETWEEN 'FROM_UNIXTIME($datum_heute)' and 'FROM_UNIXTIME($datum_halbjahr)'....

              habe bald schon alle variationen versucht jedoch will einfach keine...!!

              1. Mahlzeit,

                hab das gerade angeschaut.. jedoch ist meine neue abfrag eohne erfolg:

                Weil Du immer noch erst ein (wahrscheinlich vollkommen anders aufgebauten) Zeitstempel in PHP zusammenfrickelst und dann eine höchst unsinnvoller Abfrage durchführst.

                Warum liest Du nicht mal den von Stefan verlinkten Hinweis durch?

                Wenn ich auf der Seite gleich das erste Beispiel nehme und etwas auf Deine Situation anpasse, dann kommt folgende Syntax dabei heraus:

                ... AND erfasst >= DATE_SUB(CURDATE(), INTERVAL 6 MONTH)

                Würde mich wundern, wenn das (so oder ähnlich) nicht funktionieren würde - und ganz ohne überflüssiges PHP-Gefrickel.

                habe bald schon alle variationen versucht jedoch will einfach keine...!!

                "Will einfach keine" ist keine hilfreiche Fehlerbeschreibung und Du hast anscheinend eben NICHT "alle" Variationen durch.

                MfG,
                EKKi

                --
                sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                1. Hi

                  ... AND erfasst >= DATE_SUB(CURDATE(), INTERVAL 6 MONTH)

                  Doch doch das habe ich auch als erstens gesehen als ich auf diese Seite kam, jedoch funktioniert auch das nicht. Er zeigt mir alle an.

                  1. Mahlzeit,

                    ... AND erfasst >= DATE_SUB(CURDATE(), INTERVAL 6 MONTH)

                    Doch doch das habe ich auch als erstens gesehen als ich auf diese Seite kam, jedoch funktioniert auch das nicht. Er zeigt mir alle an.

                    Dann solltest Du vielleicht wirklich mal mit mehr Informationen rüberkommen, was den Aufbau und die Struktur der betreffenden Tabelle angeht, und nicht nur immer eine Zahl posten:

                    Welchen Typ hat das Feld erfasst? Wie werden die Daten dort hineingeschrieben? Welche Art von Daten sind enthalten? Wo und wie werden sie evtl. noch ausgelesen?

                    "Keine Arme - keine Kekse" ... und Glaskugeln sind recht selten.

                    MfG,
                    EKKi

                    --
                    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                    1. Mahlzeit,

                      Welchen Typ hat das Feld erfasst? Wie werden die Daten dort hineingeschrieben? Welche Art von Daten sind enthalten? Wo und wie werden sie evtl. noch ausgelesen?

                      Also das Feld "erfasst" hat den Typ: int(11).

                      Die Daten werden per PHP Skript hineingeschrieben.

                      Der INSERT befehl sieht dann so aus

                      .....erfasst = time().........

                      Ansonsten sind noch Texte enthalten.

                      Sie werden dann über den SELECT befehl ausgelesen, jedoch eben mit der neuen Funktionen nur die von heute und letstjahr zwischen dieser Distanz. Weil ein User hat evtl. 600 Einträge in seinem Backendbereich und bis die geladen sind ....... :-)

                      Gruss
                      fritz85

                      1. Mahlzeit,

                        Also das Feld "erfasst" hat den Typ: int(11).

                        Na bravo - wie vermutet. Das ist keine wirklich gute Idee. Warum beachtest Du nicht den Hinweis, den Dir ChrisB mittlerweile bereits dreimal gegeben hat, und benutzt einen entsprechenden Typ: http://dev.mysql.com/doc/refman/5.1/de/datetime.html

                        MfG,
                        EKKi

                        --
                        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                      2. echo $begrüßung;

                        Welchen Typ hat das Feld erfasst? Wie werden die Daten dort hineingeschrieben? Welche Art von Daten sind enthalten? Wo und wie werden sie evtl. noch ausgelesen?
                        Also das Feld "erfasst" hat den Typ: int(11).

                        Du kannst zwar Unix-Timestamps in der MySQL-Datenbank speichern, MySQL kann damit aber nicht direkt rechnen. Wenn du die Datums- und Zeitfunktionen MySQLs verwenden möchtest, musst du stets den Wert in ein Format umwandeln, das MySQL bevorzugt. (FROM_UNIXTIME()) Nachteil der notwendigen Umwandlung ist, dass MySQL keinen Index für diese Spalte mehr verwenden kann, die ständige Berechnung also dementsprechend dauert. Besser ist es also, wie empfohlen, das Tabellenfeld mit dem Typ DATETIME zu verwenden.

                        echo "$verabschiedung $name";

                  2. Hi,

                    Hi

                    ... AND erfasst >= DATE_SUB(CURDATE(), INTERVAL 6 MONTH)

                    Doch doch das habe ich auch als erstens gesehen als ich auf diese Seite kam, jedoch funktioniert auch das nicht.

                    Das funktioniert *natuerlich* "auch nicht", wenn du dich immer noch an Unix Timestamps klammerst ...

                    Nutze einen der fuer Datums-/Zeitangaben VORGESEHENEN Spaltentypen.

                    MfG ChrisB

  2. habe eine Frage. wie kann ich sehen wie ein Timestamp aufgebaut ist..?

    Die Frage verstehe ich nicht ganz. Aber um den Aufbau zu sehen, mach doch einfach ein SELECT und lass dir mal einen timestamp ausgeben. Wenn du dann noch magst, platzier deinen timestamp daneben um den Unterschied zu sehen ;)

    Es gibt ja in den SQL Datenbanken verschiedene Arten von Zeitangaben.

    1. Die Frage verstehe ich nicht ganz. Aber um den Aufbau zu sehen, mach doch einfach ein SELECT und lass dir mal einen timestamp ausgeben. Wenn du dann noch magst, platzier deinen timestamp daneben um den Unterschied zu sehen ;)

      1151240886

      Das wäre einer...aber wie kann ich denn das nun mit meiner SQL abfangen das er mir die von heute bis letstes halbjahr publiziert?

  3. Mahlzeit,

    Ich habe z.B. folgenden: "1149682084"

    Ein von Deinem Datenbanksystem (das Du - den Hinweis ignorierend - verschwiegen hast) erzeugter Timestamp?

    Möchte eine Abfrage machen von heute bis letztes halbjahr

    $datum_heute= mktime(0, 0, 0, date("m"), date("d"), date("Y"));
    $datum_halbjahr = mktime(0, 0, 0, date("m")-6, date("d"), date("Y"));

    Das scheint PHP-Code zu sein. Bist Du sicher, dass Dein Datenbanksystem und PHP die gleichen Zeitstempel erzeugen?

    Wieso nutzt Du nicht die Datumsfunktionen Deines Datenbanksystems (wie ChrisB schon meinte), anstatt den Umweg über PHP zu gehen?

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  4. Hallo

    Ich habe z.B. folgenden: "1149682084"

    wo hast Du den?

    Möchte eine Abfrage machen von heute bis letztes halbjahr

    das ist bei vernünftiger Nutzung der Möglichkeiten eines Datenbankmanagementsystems normalerweise kein Problem.

    Aber: welches Datenbankmanagementsystem (Beispiele wären Informix, Oracle, MS SQL-Server, DB2, PostgreSQL oder auch MySQL) nutzt Du überhaupt? Welche Version?

    Gib doch bitte einfach mal ein paar Beispieldatensätze an, wie sie in Deiner Datenbank stehen.

    Freundliche Grüße

    Vinzenz

    1. Hellooo

      Aber: welches Datenbankmanagementsystem (Beispiele wären Informix, Oracle, MS SQL-Server, DB2, PostgreSQL oder auch MySQL) nutzt Du überhaupt? Welche Version?

      Ich benutze phpMyAdmin 2.6.4-pl2

      Gib doch bitte einfach mal ein paar Beispieldatensätze an, wie sie in Deiner Datenbank stehen.

      In die Datenbank werden Sie so geschrieben: time()

      Hier ein Beispieldatensatz: Timestamp aus der DB: 1208182269

      1. Mahlzeit,

        Aber: welches Datenbankmanagementsystem (Beispiele wären Informix, Oracle, MS SQL-Server, DB2, PostgreSQL oder auch MySQL) nutzt Du überhaupt? Welche Version?
        Ich benutze phpMyAdmin 2.6.4-pl2

        Das ist kein Datenbankmanagementsystem. Das ist lediglich eine Oberfläche zur Administration eines solchen - in diesem Fall MySQL ... das ist ja schonmal etwas, auch wenn da noch die Information bzgl. der Version fehlt).

        Gib doch bitte einfach mal ein paar Beispieldatensätze an, wie sie in Deiner Datenbank stehen.

        In die Datenbank werden Sie so geschrieben: time()

        Ist das jetzt eine MySQL- oder eine PHP-Funktion?

        Hier ein Beispieldatensatz: Timestamp aus der DB: 1208182269

        Das ist kein Datensatz. Das ist der Inhalt eines einzelnen Feldes.

        Ich würde Dir die Lektüre einer Einführung in MySQL und die Aneignung von Grundlagen von SQL empfehlen.

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. Mahlzeit,

          Danke für deine super Infos.....

          1. Mahlzeit,

            Danke für deine super Infos.....

            Bitte, sehr gern. Anscheinend fehlen Dir wichtige Grundlagen in SQL sowie die Bereitschaft, Dich in das Thema einzulesen (Du schaffst es offenbar nicht einmal, die erste Hälfte der ersten Seite eines Dir verlinkten Hinweises zu lesen und zu verstehen).

            Vielleicht hast Du es noch nicht gemerkt, aber Du befindest Dich hier bei "SELF"HTML und nicht bei "ICHHABKEINEAHNUNGUNDWILLAUCHNIXLERNENALSOMACHTMALHINNEUNDSCHIEBTGANZFIXFUNZENDENQUELLCODERÜBER"HTML ...

            MfG,
            EKKi

            --
            sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
            1. yo,

              Vielleicht hast Du es noch nicht gemerkt, aber Du befindest Dich hier bei "SELF"HTML

              es heisst aber nicht "SELF"SQL.....

              Ilja