Сохранение отметки времени в таблице mysql с использованием php - PullRequest
87 голосов
/ 12 апреля 2011

У меня есть поле в таблице MySQL, которое имеет тип данных timestamp. Я сохраняю данные в эту таблицу. Но когда я передаю метку времени (1299762201428) в запись, она автоматически сохраняет значение 0000-00-00 00:00:00 в этой таблице.

Как сохранить метку времени в таблице MySQL?

Вот мое INSERT утверждение:

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

Ответы [ 15 ]

150 голосов
/ 12 апреля 2011

пройти так

date('Y-m-d H:i:s','1299762201428')
48 голосов
/ 12 апреля 2011

Привет, используйте для этого функцию FROM_UNIXTIME().

Вот так:

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')
19 голосов
/ 28 февраля 2014
$created_date = date("Y-m-d H:i:s");
$sql = "INSERT INTO $tbl_name(created_date)VALUES('$created_date')";
$result = mysql_query($sql);
15 голосов
/ 12 апреля 2011

Некоторые пояснения:

  • В поле типа метки времени MySQL хранятся не метки времени unix, а значение типа datetime.
  • Метка времени UNIX - это число регулярного типа inttype.
  • Отметка времени, о которой вы говорите, - это не обычная отметка времени Unix, а отметка времени с миллисекундами.

, поэтому правильный ответ будет

$timestamp = '1299762201428';
$date = date('Y-m-d H:i:s', substr($timestamp, 0, -3));
3 голосов
/ 12 апреля 2011

Тип данных ' bigint unsigned ' может удовлетворить это требование.

2 голосов
/ 12 апреля 2011

Я предполагаю, что поле, в котором вы пытаетесь сохранить значение, является полем даты и времени это не так, но то же самое, по-видимому, верно для отметок времени .Если это так, MySQL ожидает, что формат будет год-месяц-день час: минута: секунда.Чтобы сохранить метку времени, вам нужно будет преобразовать поле в числовое значение, используя запрос типа

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

Если вы используете текущее время, вы можете использовать now () или current_timestamp.

1 голос
/ 26 февраля 2013

Это должно сделать это:

  $time = new DateTime; 
1 голос
/ 12 апреля 2011

Проверьте тип поля в таблице, просто сохраните значение метки времени в типе данных, например bigint и т. Д.

Не datetime тип

1 голос
/ 12 апреля 2011

Использование FROM_UNIXTIME().

Примечание: 1299762201428 больше напоминает отметку времени в миллисекундах (например, Date () * 1 в JavaScript), и вам, вероятно, придется разделить ее на 1000.

0 голосов
/ 06 ноября 2018

Вы можете сделать: $date = \gmdate(\DATE_ISO8601);.

...