2011-07-25 190 views
4

现在我有这样的代码:店unix时间戳到MySQL

$mysqldate = date(time()); 

mysql_query("INSERT INTO permissions (date) 
VALUES ('$mysqldate')"); 

我逃跑之前,我还插入,但我的问题是,岁月不饶人存储为全0。我想知道什么列数据类型在MySQL将存储是这样的:

1311602030 

Unix时间戳,然后将适当允许我通过查询最近的日期排序。

+0

任何理由,你为什么不想使用MySQL时间戳? – Jacob

+0

“日期”列的数据类型是什么?您正试图插入一个整数。此外,我强烈建议使用DATETIME或TIMESTAMP列而不是存储整数。您可以使用MySQL函数NOW()将当前时间插入到DATETIME/TIMESTAMP列中。 – TehShrike

回答

11

如果在数据库中timestamp列的类型是INTEGER,你可以做

mysql_query("INSERT INTO permissions (date) VALUES ('".time()."')"); 

作为整数值,您还可以执行排序操作并将其通过date()函数从PHP转换回可读的日期/时间格式。 如果在数据库中的时间戳列的类型是DATETIME,你可以做

mysql_query("INSERT INTO permissions (date) VALUES ('".date('Y-m-d H:i:s')."')"); 

mysql_query("INSERT INTO permissions (date) VALUES (NOW())"); 
0

尝试:

mysql_query("INSERT INTO permissions (date) VALUES ('".$mysqldate."')"); 
0

日期()函数需要一个字符串作为第一参数,它是格式。 time()应该是第二个参数,如:date('Y-m-d H:i:s',time())。这将返回一个字符串,您可以使用DATETIME列。除此之外,如果你想存储一个unix时间戳,只需使用一个INT列。所以你可以直接存储time()的结果,而不需要调用日期。 (或者,正如我之前所说的,使用date()使用有效格式字符串格式化时间戳,并使用DATE,DATETIME或TIMESTAMP列)。见:http://www.php.net/manual/en/function.date.phphttp://dev.mysql.com/doc/refman/5.1/en/datetime.html

编辑:0您所看到的,在那里,因为MySQL并没有recognice时使用的列的格式(因此,如果您正在使用DATE列,但你传递了错误的格式,它不是recogniced,所以0被保存)

0

尝试:

$mysqldate = date('Y-m-d H:i:s'); 
mysql_query("INSERT INTO permissions (date) VALUES ('$mysqldate')");