我有一个表,我想在每个插入时间记录每个订单的时间戳。但是,我的时间戳值为零。
这是我的架构:
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)
答案 0 :(得分:3)
“数据类型规范中的DEFAULT值子句指示列的默认值。除了一个例外,默认值必须是常量;它不能是函数或表达式。这意味着,例如,您不能将日期列的默认值设置为函数的值,例如NOW()或CURRENT_DATE“
来源:http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html
您必须在插入查询中命名该列,并将Now()作为值传递。
答案 1 :(得分:2)
确保您没有插入空日期的行:
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)