Ich habe ein Feld in einer MySQL-Tabelle, das einen timestamp
-Datentyp hat. Ich speichere Daten in diese Tabelle. Wenn ich jedoch den Zeitstempel (1299762201428
) an den Datensatz weitergebe, speichert er automatisch den Wert 0000-00-00 00:00:00
in dieser Tabelle.
Wie kann ich den Zeitstempel in einer MySQL-Tabelle speichern?
Hier ist meine INSERT
-Anweisung:
INSERT INTO table_name (id,d_id,l_id,connection,s_time,upload_items_count,download_items_count,t_time,status)
VALUES (1,5,9,'2',1299762201428,5,10,20,'1'),
(2,5,9,'2',1299762201428,5,10,20,'1')
so weitergeben
date('Y-m-d H:i:s','1299762201428')
Hey, verwenden Sie dazu die Funktion FROM_UNIXTIME()
.
So was:
INSERT INTO table_name
(id,d_id,l_id,connection,s_time,upload_items_count,download_items_count,t_time,status)
VALUES
(1,5,9,'2',FROM_UNIXTIME(1299762201428),5,10,20,'1'),
(2,5,9,'2',FROM_UNIXTIME(1299762201428),5,10,20,'1')
$created_date = date("Y-m-d H:i:s");
$sql = "INSERT INTO $tbl_name(created_date)VALUES('$created_date')";
$result = mysql_query($sql);
Einige Dinge zu klären:
daher wäre die richtige Antwort
$timestamp = '1299762201428';
$date = date('Y-m-d H:i:s', substr($timestamp, 0, -3));
Datentyp ' bigint unsigned ' kann dieser Anforderung entsprechen.
Ich vermute, dass das Feld, in dem Sie versuchen, den Wert zu speichern, ein Datum/Uhrzeit-Feld ist. Dies ist nicht der Fall, aber das Gleiche scheint für Zeitstempel zu gelten. In diesem Fall erwartet mysql, dass das Format Jahr-Monat-Tag Stunde: Minute: Sekunde ist. Um den Zeitstempel zu speichern, müssen Sie das Feld mithilfe einer Abfrage wie in numerisch konvertieren
alter table <table_name> change <field> <field> bigint unsigned
Wenn Sie die aktuelle Uhrzeit verwenden, können Sie jetzt () oder current_timestamp verwenden.
Verwenden Sie FROM_UNIXTIME()
.
Hinweis: 1299762201428 ähnelt eher einem Millisekunden-Zeitstempel (wie Date () * 1 in JavaScript), und Sie müssen diesen Wert wahrscheinlich durch 1000 teilen.
Überprüfen Sie den Feldtyp in der Tabelle. Speichern Sie den Zeitstempelwert in einem Datentyp wie bigint
usw..
Nicht datetime
Das sollte es tun:
$time = new DateTime;
Verwenden Sie den Feldtyp datetime
. Es bietet viele Vorteile wie die menschliche Lesbarkeit (niemand liest Zeitstempel) und MySQL-Funktionen .
Um aus einem Unix-Zeitstempel zu konvertieren, können Sie die MySQL-Funktion FROM_UNIXTIME(1299762201428)
verwenden. Um zurück zu konvertieren, können Sie UNIX_TIMESTAMP
: SELECT UNIX_TIMESTAMP(t_time) FROM table_name
verwenden.
Wenn Sie die MySQL-Funktion nicht mögen, können Sie natürlich PHP verwenden: 'INSERT INTO table_name SET t_time = ' . date('Y-m-d H:i:s', $unix_timestamp)
.
Besser ist der Datentyp varchar(15)
.
Sie können Folgendes tun: $date = \gmdate(\DATE_ISO8601);
.
Sie können auch now()
in Ihrer Abfrage verwenden, d. H.
insert into table (time) values(now());
Es wird der aktuelle Zeitstempel verwendet.
Wenn der Zeitstempel die aktuelle Uhrzeit ist, können Sie die Funktion mysql NOW()
verwenden