MySQL: СЕЙЧАС () дает мне нули - PullRequest
6 голосов
/ 29 марта 2010

У меня есть таблица, в которую я хочу записывать временную метку каждого ордера при каждом вводе. Однако я получаю нулевые значения для отметок времени.

Вот моя схема:

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)

Ответы [ 2 ]

3 голосов
/ 29 марта 2010

"Предложение значения DEFAULT в спецификации типа данных указывает значение по умолчанию для столбца. За одним исключением, значение по умолчанию должно быть константой; оно не может быть функцией или выражением. не может установить по умолчанию для столбца даты значение функции, такой как NOW () или CURRENT_DATE "

Источник: http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html

Вам нужно будет назвать столбец в вашем запросе вставки и передать Now () в качестве значения.

2 голосов
/ 29 марта 2010

Убедитесь, что вы не вставляете строки с пустой датой:

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)
...