Сохранение метки времени в таблице mysql с помощью php


У меня есть поле в таблице 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')
Author: Nisse Engström, 2011-04-12

14 answers

Передайте вот так

date('Y-m-d H:i:s','1299762201428')
 138
Author: jimy, 2011-04-12 08:55:36

Эй, там, используйте для этого функцию 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')
 46
Author: Richard Tuin, 2014-01-02 13:14:41
$created_date = date("Y-m-d H:i:s");
$sql = "INSERT INTO $tbl_name(created_date)VALUES('$created_date')";
$result = mysql_query($sql);
 18
Author: Tushar Kumar Kundan, 2014-02-28 11:44:19

Некоторые вещи, которые следует уточнить:

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

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

$timestamp = '1299762201428';
$date = date('Y-m-d H:i:s', substr($timestamp, 0, -3));
 12
Author: Your Common Sense, 2017-02-14 12:25:38

Тип данных 'bigint без знака' может соответствовать этому требованию.

 3
Author: RollingBoy, 2011-04-12 09:00:11

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

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

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

 2
Author: Belinda, 2011-04-12 09:08:49

Использовать FROM_UNIXTIME().

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

 1
Author: Udo G, 2011-04-12 09:06:24

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

  $time = new DateTime; 
 1
Author: misaizdaleka, 2013-02-25 22:37:30

Если отметка времени является текущим временем, вы можете использовать функцию mysql NOW()

 0
Author: ipsum, 2011-04-12 09:02:34

Используйте тип поля datetime. Он обладает многими преимуществами, такими как удобочитаемость для человека (никто не читает метки времени) и функции MySQL.

Для преобразования из временной метки unix вы можете использовать функцию MySQL FROM_UNIXTIME(1299762201428). Для обратного преобразования вы можете использовать UNIX_TIMESTAMP: SELECT UNIX_TIMESTAMP(t_time) FROM table_name.

Конечно, если вам не нравится функция MySQL, вы всегда можете использовать PHP: 'INSERT INTO table_name SET t_time = ' . date('Y-m-d H:i:s', $unix_timestamp).

 0
Author: Znarkus, 2011-04-12 09:06:34

Лучше использовать тип данных varchar(15).

 0
Author: gautamlakum, 2011-04-12 09:06:58

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

Не datetime тип

 0
Author: , 2011-04-12 09:09:08

Вы также можете использовать now() в своем запросе, т. Е.:

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

Он будет использовать текущую метку времени.

 0
Author: Masood Moshref, 2017-05-03 18:36:54

Если я знаю, что база данных - MySQL, я буду использовать функцию NOW() следующим образом:

INSERT INTO table_name
   (id, name, created_at) 
VALUES 
   (1, 'Gordon', NOW()) 
 -1
Author: Jannie Theunissen, 2014-03-19 12:23:48