MySQL:NOW()给我零
问题描述:
我有一张表,我想记录每个订单在每个插入时间的时间戳。但是,我得到的时间戳值为零。MySQL:NOW()给我零
这里是我的架构:
CREATE TABLE IF NOT EXISTS orders(
order_no VARCHAR(16) NOT NULL,
volunteer_id VARCHAR(16) NOT NULL,
date TIMESTAMP DEFAULT NOW(),
PRIMARY KEY (order_no),
FOREIGN KEY (volunteer_id) REFERENCES volunteer(id)
ON UPDATE CASCADE ON DELETE CASCADE)
答
“中的数据类型规范的默认值子句表明一个列的默认值,但有一个例外,默认值必须是常量;它不能是一个函数。 。或者一个表达式这意味着,例如,你不能设置一个日期栏默认是一个函数的值,如NOW()或CURRENT_DATE”
来源:http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html
你要必须命名该柱在您的插入查询中,并将Now()作为值传递。
答
确保你没有一个空日期插入行:
INSERT INTO orders VALUES (1, 1, '');
以上将插入一个0000-00-00 00:00:00
日期。
如预期在MySQL 5.0.51a以下工作:
CREATE TABLE IF NOT EXISTS orders(
order_no VARCHAR(16) NOT NULL,
volunteer_id VARCHAR(16) NOT NULL,
date TIMESTAMP DEFAULT NOW(),
PRIMARY KEY (order_no));
INSERT INTO orders (order_no, volunteer_id) VALUES (1, 1);
INSERT INTO orders (order_no, volunteer_id) VALUES (2, 1);
INSERT INTO orders (order_no, volunteer_id) VALUES (3, 1);
INSERT INTO orders (order_no, volunteer_id) VALUES (4, 1);
SELECT * FROM orders;
+----------+--------------+---------------------+
| order_no | volunteer_id | date |
+----------+--------------+---------------------+
| 1 | 1 | 2010-03-29 17:10:37 |
| 2 | 1 | 2010-03-29 17:10:40 |
| 3 | 1 | 2010-03-29 17:10:44 |
| 4 | 1 | 2010-03-29 17:10:48 |
+----------+--------------+---------------------+
4 rows in set (0.00 sec)
你忽略了最有用的一点,不是吗? “例外是您可以指定CURRENT_TIMESTAMP作为TIMESTAMP列的默认值。请参见第10.3.1.1节”TIMESTAMP属性“(http://dev.mysql.com/doc/refman/5.1/en/timestamp.html) “。 – 2010-03-29 15:09:56
+1 @ T.K。克劳德,一定错过了那个......,谢谢! – F* 2010-03-29 15:14:46