tutorials.de Buch-Aktion 02/2012
Like Tree3Danke
  • 1 Beitrag von Flex
  • 1 Beitrag von peppijunior
  • 1 Beitrag von SnEaKy
ERLEDIGT
JA
ANTWORTEN
14
ZUGRIFFE
1246
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    qsrs qsrs ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Beiträge
    438
    Hallo,

    habe ein Skript, in dem das Datum als Unix-Timestamp in einer MySQL-DB gespeichert wurde. Kann man ein Datum, z.B. 01.01.2000 auch in den Unix-Timestamp umwandeln? Hintergrund der Frage ist der, dass man nach Datum suchen können sollte, aber da der Timestamp gespeichert wurde, wird eine einfache MySQL-Abrfrage mit dem Wert 01.01.2000 nicht funktionieren.
     

  2. #2
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    mktime()

    Alternativ kannst du dir auch die SQL Funktion FROM_UNIXTIME anschauen, siehe hier:
    http://dev.mysql.com/doc/refman/5.1/...functions.html
    Geändert von Flex (09.05.07 um 10:40 Uhr)
    qsrs bedankt sich. 
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  3. #3
    peppijunior peppijunior ist offline Mitglied Silber
    Registriert seit
    Mar 2007
    Beiträge
    55
    mktime is dein Befehl...

    oO war wer schneller*g*
    qsrs bedankt sich. 
    Nur der Kleingeist hält Ordnung - Das Genie überblickt das Chaos

    ~aktuelles Projekt: http://soundinmotion.at

  4. #4
    Avatar von SnEaKy
    SnEaKy SnEaKy ist offline Mitglied Gold
    Registriert seit
    Sep 2004
    Ort
    Hattersheim
    Beiträge
    219
    Und ich war der langsamste...

    mktime — Gibt den Unix-Timestamp/Zeitstempel für ein Datum zurück

    int mktime ( [int $Stunde [, int $Minute [, int $Sekunde [, int $Monat [, int $Tag [, int $Jahr [, int $is_dst]]]]]]] )


    $var = mktime(0,0,0,01,01,2000)

    in $var sollte nun deine Timestamp drin sein...
    qsrs bedankt sich. 
    Die Welt ist binär: Entweder man ist eine Eins oder eine Null, tot oder lebendig! - Und ich? Lebe...

  5. #5
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Du solltest wissen, dass ein Unix-Zeitstempel immer genau einen Zeitpunkt beschreibt und nicht einen Zeitraum. Einen Tag, also einen Zeitraum von 86400 Sekunden, damit abzubilden, ist nicht besondern effizient.
     
    Markus Wulftange

  6. #6
    qsrs qsrs ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Beiträge
    438
    Vielen Dank an alle für die Antworten.
     

  7. #7
    qsrs qsrs ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Beiträge
    438
    Hallo,

    habe doch noch eine Frage zur Umsetzung. Wie könnte ich am Besten ein Suchformular umsetzen, indem ich nach einem Datum suche (z.B. 01.01.2000), wenn in der Datenbank ein Unix-Timestamp gespeichert wurde.

    $var = mktime(0,0,0,01,01,2000) funktioniert hier ja nicht. Wie wandle ich das am effizientesten um, so dass auch möglichst gute Suchergebnisse geliefert werden? Danke für evtl. Antworten.
     

  8. #8
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    Du bekommst ja ein Datum, sprich einen Tag, dann formst du zwei Zeitstempel daraus, einmal 0:00:00 Uhr und einmal 23:59:59 und suchst in der Datenbank mit BETWEEN alle Zeitstempel raus, die dazwischen liegen.
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  9. #9
    qsrs qsrs ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Beiträge
    438
    Vielen Dank. Das mit der Abfrage wäre kein Problem, wie forme ich aber die Zeitstempel für den entsprechenden Tag?

    Dann habe ich noch etwas, was ich nicht verstehe.

    Ich habe einen Zeitstempel von 1178694227, was dem 09.05.2007 - 09:03:47 entpsricht. Wenn ich mir jetzt mit echo mktime (09,03,47,05,09,2007) ausgeben lasse, erhalte ich jedoch einen Zeitstempel von 1177884227 zurück, das entspräche einem Datum von 30.04.2007 - 00:03:47. Wie kommt das zustande?
     

  10. #10
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    Das liegt an den führenden Nullen.

    Entweder du übergibst sie als String

    PHP-Code:
    mktime("09""03""47""05""09""07"
    Oder ohne die führenden Nullen:

    PHP-Code:
    mktime(9347597
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  11. #11
    qsrs qsrs ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Beiträge
    438
    Danke, das wars. Das mit dem Definieren des Tages eines Zeitstempels habe ich jetzt auch umgesetzt. Ein kleines Problem besteht allerdings noch. Ich habe ein Suchfeld ($search). In das gebe ich das zu suchende Datum ein (Eingabe: 5,9,2007). So versuche ich dann mit den Werten umzugehen:

    $date1 = mktime (0,0,0,$search);
    $date2 = mktime (23,59,59,$search);

    Wenn ich die Daten ausgebe, erhalte ich jedoch den 12.05.2007, statt den 09.05.2007. Habe es auch schon so versucht: ("23","59","59","$search").
     

  12. #12
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    PHP-Code:
    $partials explode(","$_POST['eingabe']);
    $date2 mktime (23,59,59,$partials[0], $partials[1], $partials[2]); 
    Wenn du nur $search angibst, wird er es meiner Meinung nach nicht richtig interpretieren.
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  13. #13
    qsrs qsrs ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Beiträge
    438
    Ich danke dir vielmals, das hat funktioniert. Meinst Du es gibt noch einen Weg, dass ich evtl. ein Datumsformat wählen kann wie 09.05.2007 oder gar 05.09.2007, also mit Punkten und dem Tag als ersten Wert?
     

  14. #14
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    /Edit:

    Natürlich.

    Nehmen wir mal an, du bekommst den Wert so: 05.09.2007, also Tag.Monat.Jahr

    PHP-Code:
    $string "05.09.2007";
    $partials explode("."$string);

    echo 
    $partials[0]; # Tag
    echo $partials[1]; # Monat
    echo $partials[2]; # Jahr 
    Dies dann einfach bei mktime verwenden
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  15. #15
    qsrs qsrs ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Beiträge
    438
    Mensch klar, hab vielen Dank für deine Hilfe.
     

Ähnliche Themen

  1. mysql datetime in unix timestamp umwandeln?
    Von bad taste im Forum PHP
    Antworten: 7
    Letzter Beitrag: 18.12.10, 12:52
  2. unix-timestamp umwandeln
    Von Calizo im Forum Sonstige Sprachen
    Antworten: 1
    Letzter Beitrag: 05.07.07, 16:50
  3. Datum in Unix timestamp konvertieren
    Von chaosgenie im Forum Java
    Antworten: 1
    Letzter Beitrag: 03.01.07, 13:17
  4. Antworten: 4
    Letzter Beitrag: 13.09.06, 12:28
  5. Unix Timestamp mix xsl umwandeln
    Von DeeFour im Forum XML Technologien
    Antworten: 0
    Letzter Beitrag: 27.10.04, 17:01