MySQL: Versuche zum fügen einen Wert in eine timestamp-wirft einen Fehler
Ich habe eine Tabelle mit dieser Spalte:
last_modified timestamp not NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
Und wie es aussieht, kann ich nicht eine Zeile einfügen mit einem benutzerdefinierten Zeitstempel, bekomme ich diesen Fehler:
Incorrect datetime value: '1145868501' für die Spalte 'last_modified' in Zeile 1
Ich versuche, füllen Sie diese Tabelle mit Daten aus einer anderen Tabelle, die andere Tabelle hat nur eine creation_time Feld, das eine DATETIME-also ich benutze UNIX_TIMESTAMP(creation_time) zum Auffüllen der timestamp.
Ich denke, dass die timestamp-Spalte, die mit "DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP" mich daran hindert, das einfügen von meinen eigenen Sachen, bin ich Recht? Wenn ja wo ist die offizielle doc über das, und was ist die beste Lösung? Erstellen eines einfachen Zeitstempels zuerst, dann verändern Sie die Tabelle nach einfügen von Daten?
Dank!
EDIT: da sind die Menschen beraten, mich nicht zu verwenden, UNIX_TIMESTAMP, ich muss sagen, dass ich nicht nutzen möchten, am Anfang, aber ich bekam diese Fehlermeldung:
Incorrect datetime value: '2010-03-28 02:15:51' für die Spalte 'last_modified'
Also ich dachte, ich hätte das einfügen eines "echten" timestamp...
- Versucht es ohne Verpackung
creation_time
mitUNIX_TIMESTAMP
? - Eigentlich ist es das, was ich zuerst versucht, es hat nicht funktioniert 🙁
- Was ist passiert? Wie hat es denn nicht geklappt?
- Siehe mein edit 😉
- Wenn Sie nicht brauchen, die besonderen Merkmale der
TIMESTAMP
warum es nicht ändern, umDATETIME
? - Ich brauche Sie, die Sache ist die ich brauche zum Auffüllen dieser Tabelle mit vorhandenen Daten zuerst, dann der timestamp der Art, wie ich erklären, ist genau das, was ich will für zukünftige Daten. Ansonsten habe ich das Gefühl, es funktioniert nicht für 2010-03-28 02:15:51 klappte es aber mit 2010-10-11 11:11:11 zum Beispiel...
- Siehe meinen edit ... 🙂
- Vielleicht FROM_UNIXTIME SQL-Funktion, die hilfreich sein? dev.mysql.com/doc/refman/5.5/en/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie explicitedly das einfügen eines Wertes in eine
TIMESTAMP
Spalte. Lesen: TIMESTAMP-EigenschaftenUpdate
Hehe, der Fehler tritt auf, weil - naja - es war keine Zeit mit
'2010-03-28 02:15:51'
! Dies war in der Sommerzeit Lücke (die in der Regel erscheint irgendwann im März, zwischen02:00 - 03:00
oder03:00 - 04:00
.Finden Sie unter: Sommerzeit Erklärung.
TIMESTAMP
löst dieses problem durch die Speicherung nur UTC-Werte (und anzeigen/einfügen je nach server-Zeitzone). Wenn Ihr Server in unterschiedlichen Zeitzonen, und Sie waren mitDATETIME
Spalten, nicht der Zeitstempel, dann müssen Sie konvertieren die Daten, getrennt für die separaten Servern - so dass Sie nicht bekommen (plus/minus) ein paar Stunden Unterschiede.Sie versuchen, ein long integer-Wert in einen datetime-Feld. Das funktioniert aber nicht. Entfernen Sie den Aufruf
UNIX_TIMESTAMP()
und es sollte funktionieren.MySQL
TIMESTAMP
Typ ist fast identisch mit einemDATETIME
; es hat einige zusätzliche auto-update-Magie. Soweit die SELECT-und UPDATE betroffen ist, ist es einDATETIME
.Wenn die Spalte immer automatisch aktualisiert, Sie können entfernen Sie die Eigenschaft, Getter und setter, aus der Einheit.
Tun diese Weg, wird es ignoriert alle Anfragen.