要插入表的Mysql格式日期

时间:2015-11-14 19:32:13

标签: php mysql

我需要格式化并将日期插入到mysql表中,这是datetime的类型,我是从php做的。

这是声明

$timestamp ="22-11-2015+00:00:00";
$mysqltime = date ("d-m-Y H:i:s", $timestamp);

但是当我插入表格时,日期错误,显示31-12-1969 19:00:22

可能是什么问题?

4 个答案:

答案 0 :(得分:3)

应该是

$timestamp ="22-11-2015+00:00:00";
$mysqltime = date ("d-m-Y H:i:s", strtotime($timestamp));

因为date期待它的第二个参数是一个数字,特别是自1970年1月1日午夜以来的秒数。

答案 1 :(得分:1)

我认为更正格式为:

$mysqltime = date_format ($timestamp,"d-m-Y H:i:s");

让我知道这是否有效

答案 2 :(得分:1)

date函数需要第二个参数的整数时间戳。

这个MSQL插入语句可以正常工作:

INSERT INTO mytable (birthday) ('2015-11-22 00:00:00')

如果您在PHP中使用数据库类并且您正在调用的函数使用的是PHP日期对象,那么您必须使用date()函数构造PHP日期对象。

或者,如果您想在将字符串发送到要插入的数据库之前使用PHP代码重新格式化PHP中的日期,那么我认为您使用strtodate来获取PHP日期对象,然后使用date()

$phpdate = strtodate('d-m-Y H:i:s', '22-11-2015 00:00:00')
$dateformysql = date('Y-m-d H:i:s', $phpdate)
databaseclass.dotheinsert($mysqldate)

答案 3 :(得分:1)

这应该有效,但对我不起作用!

$timestamp ="22-11-2015+00:00:00";
$mysqltime = date ("d-m-Y H:i:s", strtotime($timestamp));

我认为这是因为我的国家标准格式(LC_TIME)是“Y-m-d”而不是“d-m-Y”。然而,这完美地运作:

$timestamp ="22-11-2015+00:00:00";
// The '+' sign needs to be escaped!!
$time = date_create_from_format( "d-m-Y\+H:i:s", $timestamp);
$mysqltime = $time->format( 'd-m-Y H:i:s' );

另一方面,MySQL使用日期格式“YYYY-MM-DD”作为标准。正确的格式字符串应为:

$mysqltime = date ("Y-m-d H:i:s", strtotime($timestamp));
// or second option
$mysqltime = $time->format( 'Y-m-d H:i:s' );