Сохранение метки времени в таблице 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')

Ответ 1

передайте это

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

Ответ 2

Эй, используйте функцию 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')

Ответ 3

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

Ответ 4

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

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

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

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

Ответ 5

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

Ответ 6

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

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

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

Ответ 7

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

  $time = new DateTime; 

Ответ 8

Используйте FROM_UNIXTIME().

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

Ответ 9

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

Ответ 10

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

Не datetime тип

Ответ 11

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

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

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

Ответ 12

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

Ответ 13

Используйте тип поля 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).

Ответ 14

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

INSERT INTO table_name
   (id, name, created_at) 
VALUES 
   (1, 'Gordon', NOW())