如何在Mysql字段中设置默认的当前日期时间

时间:2014-05-14 09:35:02

标签: php mysql datetime default-value

我正在开发一个前端为PHP且后端MySql与XAMPP服务器的项目。

我在DATETIME中有一个名为“created”的字段,数据类型为MySQl。我需要将默认的当前日期时间值传递给此字段。

我知道PHP中有一些功能可以将当前日期时间添加到MySql数据库,如

date_default_timezone_set("America/Chicago");

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

在某些情况下(可能是错误的),PHP代码可能无法在mysql中传递日期时间,并且默认情况下它由MySql采用“0000-00-00 00:00:00”。

任何人都可以指导我需要添加哪个单词作为此创建字段的默认值。

我尝试将CURRENT_TIMESTAMP添加为默认值。

但它给了我错误:

 #1067 - Invalid default value for 'created' 

任何人都可以给我指点。

感谢。

3 个答案:

答案 0 :(得分:1)

只有CURRENT_TIMESTAMP版本MySQL或更高版本才能将5.6.5设置为默认值。否则,您只能将0的默认值设置为datetime类型列。

示例@ MySQL Fiddle 5.5.32

您可以在SQL Fiddle上尝试以下示例,并了解使用MySQL 5.5.32不支持此示例。将其更改为5.6.6,以下示例应该正常工作。

示例@ MySQL Fiddle 5.6.6

来自我本地服务器的示例

mysql> create table ts( dt datetime default current_timestamp );
Query OK, 0 rows affected (0.54 sec)

mysql> select version();
+-----------+
| version() |
+-----------+
| 5.6.15    |
+-----------+

请参阅MySQL文档

答案 1 :(得分:0)

如果您想使用ON UPDATE CURRENT_TIMESTAMP,则应将字段设为TIMESTAMP而不是DATETIME

或者,考虑在这种情况下使用触发器:http://dev.mysql.com/doc/refman/5.0/en/trigger-syntax.html

(正如slugonamission所说:MySQL is not allowing ON UPDATE CURRENT_TIMESTAMP for a DATETIME field

答案 2 :(得分:0)

请将TYPE从DATETIME更改为timestamp,并在默认选择CURRENT_TIMESTAMP

希望这会奏效。

注意:您不需要提供长度/值

如果您要更新任何更新的记录,请将属性更改为on update CURRENT_TIMESTAMP