Zeitstempel in MySQL-Tabelle mit PHP speichern

Lesezeit: 3 Minuten

Benutzer-Avatar
gautamlakum

Ich habe ein Feld in einer MySQL-Tabelle, die eine hat timestamp Datentyp. Ich speichere Daten in dieser Tabelle. Aber wenn ich den Zeitstempel übergebe (1299762201428) in den Datensatz, wird der Wert automatisch gespeichert 0000-00-00 00:00:00 in diese Tabelle.

Wie kann ich den Zeitstempel in einer MySQL-Tabelle speichern?

Hier ist mein INSERT Aussage:

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

  • Welcher Zeitstempel du sprichst über? Wo hast du es bekommen?

    – Ihr gesunder Menschenverstand

    12. April 2011 um 9:05 Uhr


  • Kannst du deine Tabellenstruktur hier einfügen?

    Benutzer319198

    12. April 2011 um 9:06 Uhr

so durchgehen

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

  • aber der Wert, den Sie in db erhalten, zeigt den Spaltentyp an datetimewenn Sie es ändern möchten timestamp Ändern Sie dann den Spaltentyp in varchar(15)

    – Jimy

    12. April 2011 um 8:57 Uhr

  • Setzen Sie es dann auf ein INT-Feld. Wie auch immer, ein Zeitstempel ist nur eine Darstellung eines Datums und umgekehrt. Sie können mit der Funktion, die jimy Ihnen gesagt hat, vom Zeitstempel zum Datum konvertieren und umgekehrt mit strtotime. Bearbeiten: Übrigens, der Zeitstempel deckt nur einen Bereich aller möglichen Daten ab (1970-01-01 bis xx-xx-2032, glaube ich)

    – Carlos Campderros

    12. April 2011 um 8:58 Uhr


  • Was ist also die Verwendung des Zeitstempel-Datentyps? Das Feld s_time hat den Datentyp timestamp. Kann ich 1299762201428 nicht in diesem Feld speichern?

    – gautamlakum

    12. April 2011 um 9:00 Uhr

  • @lakum4stackof: Informationen zum Zeitstempel-Datentyp finden Sie unter dev.mysql.com/doc/refman/5.0/en/timestamp.html für Details.

    – Rollender Junge

    12. April 2011 um 9:03 Uhr


  • @lakum4stackof – Die Verwendung von Zeitstempel besteht darin, dass Sie den Zeitstempel speichern, er wird jedoch nur als Datum angezeigt. Intern (wie alle Datentypen) wird es als vorzeichenbehaftete Ganzzahl gespeichert. Wenn Sie diesen Zeitstempel auch als Ganzzahl formatieren möchten, schlage ich vor, dass Sie dann nur das INT-Feld verwenden. Die Verwendung der Zeitstempelspalte ist die Datumsmanipulation (Hinzufügen von Intervallen und dergleichen).

    – Michael JV

    12. April 2011 um 9:06 Uhr

Benutzer-Avatar
Richard Tuin

Hallo, benutze die FROM_UNIXTIME() Funktion dazu.

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

  • Warum ist das besser als date('Y-m-d H:i:s','1299762201428')?

    – Juri

    16. Mai 2016 um 7:27 Uhr

  • Typ Sicherheit: FROM_UNIXTIME ergibt einen nativen mysql-Datumstyp, während php’s date() gibt eine Zeichenfolge zurück.

    – Richard Tuin

    20. Mai 2016 um 6:19 Uhr


  • Es ist besser, weil Webserver ( PHP ) und MySQL an verschiedenen Orten sein könnten. date(‘Ymd H:i:s’,’1299762201428′) legt also die Zeitzone des Webservers fest. Wenn verschiedene Webserver in verschiedenen Zonen platziert sind, werden Sie inkonsistente Daten haben. Alternativ müssen Sie in Ihrem Code die Zeitzone der Anwendung auf die Zeitzone von MySQL zwingen. date_timezone_set

    – Ostiko

    4. Mai 2017 um 19:34 Uhr


Benutzer-Avatar
Tuschar Kumar Kundan

$created_date = date("Y-m-d H:i:s");
$sql = "INSERT INTO $tbl_name(created_date)VALUES('$created_date')";
$result = mysql_query($sql);

Benutzer-Avatar
Ihr gesunder Menschenverstand

Einige Dinge zur Klarstellung:

  • Der MySQL-Zeitstempelfeldtyp speichert keine Unix-Zeitstempel, sondern einen datetime-Art-Wert.
  • Der UNIX-Zeitstempel ist eine Zahl eines regulären int-Typs.
  • Der Zeitstempel, von dem Sie sprechen, ist kein normaler 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));

Benutzer-Avatar
Masood Moshref

Sie können verwenden now() auch in Ihrer Abfrage, dh:

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

Es wird der aktuelle Zeitstempel verwendet.

Benutzer-Avatar
Rollender Junge

Datentyp ‘bigint ohne Vorzeichen“ kann dieser Anforderung entsprechen.

Ich vermute, dass das Feld, in dem Sie den Wert speichern möchten, ein Datetime-Feld ist es ist nicht, aber das gleiche scheint für Zeitstempel zu gelten. In diesem Fall erwartet mysql das Format Jahr-Monat-Tag Stunde:Minute:Sekunde. Um den Zeitstempel zu speichern, müssen Sie das Feld mit einer Abfrage wie z

alter table <table_name> change <field> <field> bigint unsigned

Wenn Sie die aktuelle Zeit verwenden, können Sie now() oder current_timestamp verwenden.

1355670cookie-checkZeitstempel in MySQL-Tabelle mit PHP speichern

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy