【发布时间】:2012-04-08 03:20:21
【问题描述】:
由于 MySQL 显然不能像其他一些数据库一样基于 cmets 在 datetime 字段中自动插入函数 now() ,因此我明确地尝试使用 SQL 语句插入它。 (由于时间戳的各种限制,人们似乎认为带有 curdate() 的时间戳不是答案。)网上有很多文章建议使用 SQL 插入 now() 应该可以工作。
但是,当我尝试使用 SQL 语句插入日期时间时,该字段不会填充当前时间/日期,而是只给我默认的 0000-00- 等。这可能是语法错误,但它让我发疯,所以我发布它。
mysql_query("INSERT INTO users (first, last, whenadded) VALUES ('$first', '$last', now())";
它首先插入和最后插入,但添加时不插入,在添加字段中留下 0000-00-00 等。
字段类型是日期时间,它没有排序规则、属性、null default 或 extra。顺便说一句,我尝试将 now() 放在单引号中......它引发了错误。
【问题讨论】:
-
奇怪,你展示的应该可以。您确定这是一个正确的 DATETIME 字段吗?无论如何,cmets 不正确,您可以使用
DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMPdev.mysql.com/doc/refman/5.0/en/timestamp-initialization.html 自动执行此操作 -
适用于 TIMESTAMP (CURRENT_TIMESTAMP) 的内容是否也适用于 Datetime? bugs.mysql.com/bug.php?id=27645 由于人们将其描述为日期限制,因此我回避了 Timestamp。将尝试重置字段类型
-
呃,我的错。对不起。这似乎确实只适用于 TIMESTAMP 字段,这是一种耻辱。但是您在上面显示的查询应该工作
-
@Pekka - 尽管有名字,
CURRENT_TIMESTAMP对我来说是 DateTime 列的默认值。 -
MySQL 的
UTC_TIMESTAMP()有时也很有用。同样,尽管有名称(时间戳),但在将DateTime列设置为此值时也可以使用。例如。"UPDATE mytable SET MyDateTimeField=UTC_TIMESTAMP() WHERE MyID={$theID};"