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

14 ответов:

ущелье

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

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

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

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

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

тип 'тип bigint без знака' может удовлетворить это требование.

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

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

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

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

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

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

  $time = new DateTime; 

если отметка времени является текущим временем, вы можете использовать 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).

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

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

не datetime тип

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

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

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

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

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

Comments

    Ничего не найдено.