使用php在mysql表中保存时间戳

时间:2011-04-12 08:53:30

标签: php mysql database sql-insert

我在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')

15 个答案:

答案 0 :(得分:148)

像这样传递

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

答案 1 :(得分:48)

嘿那里,请使用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')

答案 2 :(得分:19)

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

答案 3 :(得分:15)

有些事要澄清:

  • MySQL时间戳字段类型不存储unix时间戳,而是存储datetime-kind值。
  • UNIX时间戳是常规int类型的数字。
  • 您所谈论的时间戳不是常规的unix时间戳,而是带有毫秒的时间戳。

因此正确的答案是

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

答案 4 :(得分:3)

数据类型' bigint unsigned '可能符合此要求。

答案 5 :(得分:2)

我猜你正在尝试保存该值的字段是日期时间字段它不是,但时间戳似乎也是如此。如果是这样,mysql希望格式为年 - 月 - 日小时:分:秒。为了保存时间戳,您必须使用类似

的查询将字段转换为数字
alter table <table_name> change <field> <field> bigint unsigned

如果您使用的是当前时间,则可以使用now()或current_timestamp。

答案 6 :(得分:1)

使用FROM_UNIXTIME()

注意:1299762201428看起来更像是一个毫秒时间戳(如JavaScript中的Date()* 1),你可能需要将它除以1000.

答案 7 :(得分:1)

检查表中的字段类型只是将时间戳值保存在数据类型中,如bigint等。

不是datetime类型

答案 8 :(得分:1)

这应该这样做:

  $time = new DateTime; 

答案 9 :(得分:0)

如果时间戳是当前时间,则可以使用mysql NOW()函数

答案 10 :(得分:0)

使用datetime字段类型。它具有许多优点,如人类可读性(无人读取时间戳)和MySQL functions

要从unix时间戳转换,您可以使用MySQL函数FROM_UNIXTIME(1299762201428)。要转换回来,您可以使用UNIX_TIMESTAMPSELECT 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)

答案 11 :(得分:0)

更好的是使用数据类型varchar(15)

答案 12 :(得分:0)

您也可以在查询中使用now(),即:

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

它将使用当前时间戳。

答案 13 :(得分:0)

您可以执行:$date = \gmdate(\DATE_ISO8601);

答案 14 :(得分:-1)

如果我知道数据库是MySQL,我会像这样使用NOW()函数:

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