当我按原样插入代码时,我得到 NULL
INSERT INTO dates VALUES (date='12-11-20 11:30:11');
当我触发查询时
SELECT * FROM dates;
我明白了
|dates |
| NULL |
INSERT INTO dates (date) VALUES('12-11-20 11:30:11')
你的语法是错误的。
正确的语法如下所示。
INSERT INTO dates (dates) VALUES ('12-11-20 11:30:11');
你的INSERT
查询是错误的。使用以下语法之一:
INSERT INTO dates (date) VALUES ('12-11-20 11:30:11')
INSERT INTO dates SET date = '12-11-20 11:30:11'
第一个是首选,因为它适用于所有数据库,而后者很可能不是标准 SQL。
您还应该考虑使用2012-11-20
而不是12-11-20
. 由于人们不使用 4 位数年份,我们都知道 12 年前发生了什么。
好吧,这里有几个有趣的问题需要注意。
首先,在我看来,明确说明将要更新的字段更安全:否则在表结构更改后查询将变得不可用。并且不建议为表的字段和表本身赋予相同的名称:它可能会在以后混淆您。
其次,您的 DATETIME 文字实际上对于 MySQL 来说是可以的 - 它接受两个数字一年,并通过特定规则对其进行解析:
Year values in the range 70-99 are converted to 1970-1999.
Year values in the range 00-69 are converted to 2000-2069.
所以你仍然可以使用 '12-11-20' 语法……如果以后维护你的脚本的人不会混淆它(甚至你,也许......))。
最后,INSERT 表达式可以采用 VALUES 子句中的任何有效表达式。在您的情况下,它是date = '...'
表达式,它被评估为 NULL;这就是为什么 NULL 被插入到你的表中。但是,如果您只想插入 DATETIME 文字(您可能会这样做),请删除赋值符号(实际上被视为“等式运算符”)并简单地使用...
INSERT INTO dates (datetime_field) VALUES ('2012-11-20 12:12:12');
...或者这个,如果你想用一个查询插入几行:
INSERT INTO dates (datetime_field) VALUES ('2012-11-20 12:12:12'), ('2012-11-20 13:13:13');