Ответ 1
передайте это
date('Y-m-d H:i:s','1299762201428')
У меня есть поле в таблице 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')
передайте это
date('Y-m-d H:i:s','1299762201428')
Эй, используйте функцию 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);
Некоторые вещи, которые нужно уточнить:
поэтому правильный ответ будет
$timestamp = '1299762201428';
$date = date('Y-m-d H:i:s', substr($timestamp, 0, -3));
Datatype ' bigint unsigned' может удовлетворить это требование.
Я предполагаю, что поле, в котором вы пытаетесь сохранить значение, является полем datetime , но не похоже, что это верно для временных меток. Если так, то mysql ожидает, что формат будет Year-month-day Hour: минута: секунда. Чтобы сохранить временную метку, вам нужно будет преобразовать поле в числовое значение с помощью запроса типа
alter table <table_name> change <field> <field> bigint unsigned
Если вы используете текущее время, вы можете использовать now() или current_timestamp.
Это должно сделать это:
$time = new DateTime;
Используйте FROM_UNIXTIME()
.
Примечание: 1299762201428 больше похоже на миллисекунду timestamp (например, Date() * 1 в JavaScript), и вам, вероятно, придется разделить это на 1000.
Лучше использовать тип данных varchar(15)
.
Проверить тип поля в таблице, просто сохранить значение метки времени в типе данных, например bigint
и т.д.
Не datetime
тип
Вы также можете использовать now()
в своем запросе, т.е.
insert into table (time) values(now());
Он будет использовать текущую временную метку.
Если временная метка является текущим временем, вы можете использовать функцию mysql NOW()
Используйте тип поля 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)
.
Если я знаю, что база данных - это MySQL, я буду использовать функцию NOW() следующим образом:
INSERT INTO table_name
(id, name, created_at)
VALUES
(1, 'Gordon', NOW())