Frage zu Date_Format und MySQL

  • Hallo Leute,

    ich habe da mal ein kleines Problem bei MySQL und einer Datetime-Abfrage.
    Als Hardware setze ich ein Raspberry Pi Model B+ mit Wheezy 12.12.2014 ein.
    Es ist jetzt genau der 15.03.2015 13:51
    In meiner MySQL DB steht folgendes als Datum
    2015-03-15 10:55:00 und
    2015-03-15 19:55:00
    Mache ich jetzt eine SQL-Abfrage mit:
    select name, mac, mydate from mywake where mydate < DATE_FORMAT(NOW(),'%YYYY %d %m %H:%i')
    bekomme ich beide Spalten angezeigt!?!
    Warum ist das so?
    wird hier die Zeit nicht berücksichtigt?

    Bitte um Hilfe!

  • Ich empfehle dir lieber die UNIXTIME zu speichern, also die Epoch. Das ist eine standardisierte Zeitmessung, die Sekunden die seit dem 1.1.1970 vergangen sind. Diese kannst du dann nach belieben sehr einfach in ein Menschlich-lesbares Format umwandeln und auch Vergleiche mit anstellen etc.. Nimmt zudem weniger Platz in der DB ein als Strings.

    Davon abgesehen ist

    %YYYY %d %m %H:%i

    anders als

    2015-03-15 10:55:00

    Siehst du nicht die Bindestriche beim Datum :huh:

    %Y liefert zudem bereits 2015, %YYYY ist also zu viel des guten :fies:

  • Vielen lieben Dank für eure Anteilnahme.
    Habe jetzt schon die Idee von Meingrafd verfolgt.
    Das hat auch soweit funktioniert - nochmals Danke.
    Für alle die jetzt noch Fragezeichen sehen. Einfach ausprobieren. Dazu coden wir im phpmyadmin und SQL folgendes:

    Code
    CREATE TABLE `mytable` (
      `userId` int(11) NOT NULL,
      `url` varchar(100) NOT NULL,
      `epoch` int(11) NOT NULL
    );


    Ab hier müssen wir diese Zeilen einzeln eingeben (es müssen nicht alle sein)

    SQL
    INSERT INTO mytable VALUES(1,'homepage',1225540800); 
    # User 1 visited the url homepage on Nov 1, 2008
    INSERT INTO mytable VALUES(2,'contact',1225886400); 
    # User 2 visited the url contact on Nov 5, 2008
    INSERT INTO mytable VALUES(3,'contact',1225972800); 
    # User 3 visited the url contact on Nov 6, 2008
    INSERT INTO mytable VALUES(4,'homepage',1228132800); 
    # User 4 visited the url homepage on Dec 1, 2008


    So jetzt machen wir mal eine Abfrage mit:

    SQL
    SELECT userId, url, FROM_UNIXTIME(epoch) FROM mytable


    Wie wir sehen bekommen wir ein lesbares Datum angezeigt. Nun müssen wir nur noch wissen, wie man vom einem Datum in ein Unix-Time-Format kommt. Auch das ist nur eine kurze Zeile im PHP-Code:

    Code
    $timestamp = strtotime('2015-03-15 19:05:00');
    echo $timestamp;


    Natürlich könnt ihr statt dem Datum auch eine Variable von einem Webformular einsetzen!

    Also nochmals recht vielen Dank und viel Spaß beim Testen!
    [/code][/php]

  • ...anscheint denken einige mein Username hätte etwas mit "mein graf" zu tun ? :s Dabei enthält mein Nick gar kein n ... Oder ist richtig lesen für manche wirklich so schwer :-/


    Wenn du bereits den Unixtimestamp in die Datenbank einfügst, brauchst du im Query kein 'FROM_UNIXTIME' da du ja später in PHP diesen timestamp mithilfe date(); umwandelst

    Code
    php -r '$timestamp="1228132800"; echo date("d.m.Y H:i:s", $timestamp);'      
    01.12.2008 13:00:00

    Und den aktuellen timestamp gibt dir time(); aus.

    • Offizieller Beitrag

    es spricht sich leichter ;)...aber ich versteh dich...das ist wie wenn einer DBV schreibt...dabei bin ich gar keine Versicherung :lol:

    Der Unterschied zwischen Genie und Wahnsinn definiert sich im Erfolg.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!