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()作为值传递。

+9

你忽略了最有用的一点,不是吗? “例外是您可以指定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

+0

+1 @ T.K。克劳德,一定错过了那个......,谢谢! – F* 2010-03-29 15:14:46

确保你没有一个空日期插入行:

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)