[MySQL] Time String zu timestamp

strolch00

redraft.de
ID: 155297
L
21 April 2006
1.684
72
Hi @all,

ich hab hier einen Timestring 'Fri, 02 Feb 2007 18:55:46 +0100' und von dem brauch ich dem Timestamp allerding bringt mich weder Forum noch Manual da weiter. Nach langem Suchen habe ich "UNIX_TIMESTAMP" probiert, aber anscheinend habe ich das Manual falsch verstanden.

Hat einer von euch da nen Gedankenanstoß für mich? In der DB kommt einfach null an.

Ich vermute das der Tag und die Zeitzone zu viel sind, kann das der Fall sein?

Gruß strolch00
 
wo kommt denn der string her? aus ner anwendung?
weil das ist kein normales mysql-format, die speichern net den wochentag
 
warum ist einfach... das ist ne standard formatierung für datums angaben im internet. wie man das jetzt am dümsten auseinander nimmt keine ahnung. in der datenbank selbst wirste da keine chance haben (jedenfalls mit den grundfunktionen)... ich würd mir einach mal nen php rss reader anschauen und kucken wie die das datum auseinader nehmen.
 
Naja am dümmsten warscheinlich mit explode(' ', $str); am umständlichsten warscheinlich mit UNIX_TIMESTAMP(EXTRACT(expr, str)....)
ich bin gerade mit UNIX_TIMESTAMP(SUBSTRING(str,5 ,20)) am rumprobieren aber irgendwie hab ich mich glaube ich verzählt. Wenn Zero meint das is ne Standartangabe dann sollte das so funktionieren, wenn der Feed Konform ist.

@tH hat mir leider nicht geholfen hatte ich mit auch schon so überlegt aber Fehlanzeige ist genauso eine 0.
 
strtotime (PHP)

Frisst aber das +0100-Anhängsel nicht, falls das wichtig ist, seperat verarbeiten und Zeitspanne dazu addieren.

Edit: wäre jetzt natürlich eine PHP-Lösung. Wenn es eine reine mySQL-Lösung sein soll, hilft dir wohl wirklich das STR_TO_TIME von zerHacker.
 
Also ich habe es jetzt folglich gelöst:

Spalte als "datetime" deklariert und dann mittels folgenden code im Query umgewandeln:

STR_TO_DATE(SUBSTRING('Fri, 02 Feb 2007 18:55:46 +0100',6 ,20), '%m %b %Y %H:%i:%s')

fals jemand ne bessere Idee hat, bitte melden mir gefällt es net wirklich. Und die PHP Lösung finde ich auch etwas recht umständlich. Nur wie kann ich jetzt die Zeitzone berücksichtigen fals die fon meinem Server abweicht. Da hatte ich auch schonmal ne funktion gelesen, aber ich habs vergessen wo:( irgendwas mit gtc oder so glaube ich.

*edit dieses hier geht ebenso
STR_TO_DATE(SUBSTRING('Fri, 02 Feb 2007 18:55:46 +0100',1 ,26), '%a, %m %b %Y %H:%i:%s')

Jetzt ist nur die Frage was ist eleganter bzw. schonender? Ich tendiere zum letzeren weil das substring direkt vorn ansetzen kann.
 
Zuletzt bearbeitet:
es wäre weit performanter wenn du direkt im php vor dem eintragen in die datenbank das datum umwandelst, in unix-timestamp oder sonstiges und dann einfach immer ausliest, denn berechnungen oder sontige spielereien mit der zeit aus den datenbankeinträgen kannst du damit nicht machen
 
Ehm Ice kannst mir das mal erklären?? Wieso kann ich später keine Berechnungen damit machen ich habe doch jetzt datetime in der Spalte also Jahr-Monat-Tag Stunde:Minute:sekunde

Das kann man doch bequem umwandeln, oder nicht. Ok Wegen der Performance hast warscheinlich recht aber ich konnte üben^^.
 
ich habe das so verstanden, dass du diesen string der aus dem rss kommt direkt in die db schreibst^^ damit zu rechnen wäre natürlich ziemlich dumm, timestamp ist ok ;)