101

timestamp我在具有数据类型的 MySQL 表中有一个字段。我正在将数据保存到该表中。但是当我将时间戳 ( 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')
4

15 回答 15

172

像这样通过

date('Y-m-d H:i:s','1299762201428')
于 2011-04-12T08:55:36.673 回答
56

嘿那里,使用这个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')
于 2011-04-12T09:04:26.913 回答
20
$created_date = date("Y-m-d H:i:s");
$sql = "INSERT INTO $tbl_name(created_date)VALUES('$created_date')";
$result = mysql_query($sql);
于 2014-02-28T11:26:10.720 回答
16

需要澄清的一些事情:

  • MySQL 时间戳字段类型不存储 unix 时间戳,而是一个日期时间类型的值。
  • UNIX 时间戳是一个常规 int 类型的数字。
  • 您正在谈论的时间戳不是常规的 unix 时间戳,而是以毫秒为单位的时间戳。

因此正确的答案是

$timestamp = '1299762201428';
$date = date('Y-m-d H:i:s', substr($timestamp, 0, -3));
于 2011-04-12T09:32:31.237 回答
4

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

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

它将使用当前时间戳。

于 2013-11-08T13:06:21.060 回答
3

数据类型“ bigint unsigned ”可能适合此要求。

于 2011-04-12T09:00:11.827 回答
2

我猜你试图保存值的字段是 datetime 字段,但它不是,但对于 timestamps 似乎也是如此。如果是这样,mysql 期望格式为年-月-日时:分:秒。为了保存时间戳,您必须使用类似的查询将字段转换为数字

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

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

于 2011-04-12T09:03:12.950 回答
1

使用FROM_UNIXTIME().

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

于 2011-04-12T09:06:24.133 回答
1

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

datetime输入

于 2011-04-12T09:09:08.717 回答
1

这应该这样做:

  $time = new DateTime; 
于 2013-02-25T22:37:30.603 回答
0

如果时间戳是当前时间,你可以使用 mysqlNOW()函数

于 2011-04-12T08:58:23.800 回答
0

使用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)

于 2011-04-12T09:06:34.647 回答
0

更好的是使用 datatype varchar(15)

于 2011-04-12T09:06:58.130 回答
0

你可以这样做:$date = \gmdate(\DATE_ISO8601);

于 2018-11-06T00:14:28.820 回答
-1

如果我知道数据库是 MySQL,我将使用 NOW() 函数,如下所示:

INSERT INTO table_name
   (id, name, created_at) 
VALUES 
   (1, 'Gordon', NOW()) 
于 2014-03-19T12:23:48.737 回答