it-swarm.com.de

Zeitstempel in MySQL-Tabelle mit PHP speichern

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')
81
gautamlakum

so weitergeben

date('Y-m-d H:i:s','1299762201428')
145
jimy

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')
47
Richard Tuin
$created_date = date("Y-m-d H:i:s");
$sql = "INSERT INTO $tbl_name(created_date)VALUES('$created_date')";
$result = mysql_query($sql);
18

Einige Dinge zu klären:

  • Der MySQL-Timestamp-Feldtyp speichert keine Unix-Timestamps, sondern eher einen datetime-artigen Wert.
  • Der UNIX-Zeitstempel ist eine Nummer eines normalen int-Typs.
  • Der Zeitstempel, über den Sie sprechen, ist kein regulärer Unix-Zeitstempel, sondern ein Zeitstempel mit Millisekunden. 

daher wäre die richtige Antwort 

$timestamp = '1299762201428';
$date = date('Y-m-d H:i:s', substr($timestamp, 0, -3));
13

Datentyp ' bigint unsigned ' kann dieser Anforderung entsprechen.

3
RollingBoy

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.

2
Belinda

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.

1
Udo G

Überprüfen Sie den Feldtyp in der Tabelle. Speichern Sie den Zeitstempelwert in einem Datentyp wie bigint usw..

Nicht datetime

1
user319198

Das sollte es tun:

  $time = new DateTime; 
1
misaizdaleka

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).

0
Znarkus

Besser ist der Datentyp varchar(15).

0
gautamlakum

Sie können Folgendes tun: $date = \gmdate(\DATE_ISO8601);.

0
HelpNeeder

Sie können auch now() in Ihrer Abfrage verwenden, d. H.

insert into table (time) values(now());

Es wird der aktuelle Zeitstempel verwendet.

0
Masood Moshref

Wenn der Zeitstempel die aktuelle Uhrzeit ist, können Sie die Funktion mysql NOW() verwenden

0
ipsum