在MySQL数据库中以特定格式插入日期


Insert date in specific format into MySQL db

我需要将当前日期以以下格式插入MySQL数据库中的TIMESTAMP列:d-m-Y

到目前为止,我正在使用SQL NOW(),它返回日期为Y-m-d。因为我使用AJAX来显示数据,所以不能使用$date_returned->format(d-m-Y)格式化返回的结果。因此,我需要以在AJAX调用中显示的格式插入日期。

我尝试使用以下函数插入日期:

 1) date('d-m-Y');    
 2) (new 'DateTime())->format('Y-m-d');

我理解这两个函数做几乎相同的事情,但我不确定我还应该尝试什么。

MySQL为两个日期抛出以下错误:

Error : (1292) Incorrect datetime value: '-2014' for column 'msg_date' at row 1

我猜这应该是一个容易的解决方案,但我不知道是什么错了。我尝试了TIMESTAMPDATETIME在MySQL的端,但都没有工作。(我需要它是TIMESTAMP虽然)。

欢迎任何建议!

$ newdate =日期(Y-m-d, strtotime(' 10-09-2015 ')); 之前

或者如果您想要当前时间,只需使用

$now = date('Y-m-d');

如果你的msg_date列的结构是DATETIMETIMESTAMP,日期格式应该是:

YYYY-MM-DD HH:MM:SS

可以通过PHP这样格式化:

$date = date("Y-m-d H:i:s");

或者如果你已经有了一个日期,你想把它转换成那个格式,我们可以使用strtotime():

$date = date("Y-m-d H:i:s", strtotime($date));

更多日期格式,请点击此链接

MySQL错误消息表明您的日期格式错误。

必须先写年,然后是月,最后是日,如:

date('Y-m-d')  // right

在第一个例子中,你有

date('d-m-Y')  // wrong

在你上面的一个例子中,你是对的,但是你说你得到了同样的回应,所以我认为这不是你真正尝试的。

另一件需要注意的事情是,MySQL TIMESTAMP列同时存储日期和时间。只给MySQL一个日期是有效的(MySQL会把时间保留为0),但如果你不需要存储时间,你也可以把DATE列而不是TIMESTAMP列。

如果你想将日期显示为d-m-Y,那么无论如何都要这样做,但是它们需要以Y-m-d的形式发送到MySQL。