MySQL: ТЕПЕРЬ () предоставление мне нули

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

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

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)
6
задан Daniel Vassallo 31 March 2010 в 21:46
поделиться

2 ответа

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

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

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

3
ответ дан 17 December 2019 в 04:44
поделиться

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

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)
2
ответ дан 17 December 2019 в 04:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: