Сохранение метки времени в таблице 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')
14 ответов:
Эй, там, используйте для этого функцию
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')
$created_date = date("Y-m-d H:i:s"); $sql = "INSERT INTO $tbl_name(created_date)VALUES('$created_date')"; $result = mysql_query($sql);
Кое-что проясним:
Тип поля MySQL timestamp не хранит временные метки unix, а скорее значение типа datetime.
- UNIX timestamp-это число регулярного типа int.
- метка времени, о которой вы говорите, - это не обычная метка времени unix, а метка времени с миллисекундами.
Поэтому правильным ответом будет
$timestamp = '1299762201428'; $date = date('Y-m-d H:i:s', substr($timestamp, 0, -3));
Я предполагаю, что поле, в котором вы пытаетесь сохранить значение, является полем datetime это не так, но то же самое, похоже, верно для временных меток. Если это так, то mysql ожидает, что формат будет год-месяц-день час: минута: секунда. Чтобы сохранить метку времени, вам придется преобразовать поле в числовое с помощью запроса типа
alter table <table_name> change <field> <field> bigint unsigned
Если вы используете текущее время, вы можете использовать now () или current_timestamp.
Использование
Примечание: 1299762201428 больше похоже на миллисекундную метку времени (например, Date ()*1 в JavaScript), и вам, вероятно, придется разделить ее на 1000.FROM_UNIXTIME()
.
Используйте тип поля
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)
.
Проверьте тип поля в таблице просто сохраните значение метки времени в типе данных, например
bigint
и т. д.Не
datetime
Тип