0

当我按原样插入代码时,我得到 NULL

INSERT INTO dates VALUES (date='12-11-20 11:30:11');

当我触发查询时

SELECT * FROM dates;

我明白了

|dates |
| NULL |
4

4 回答 4

4
INSERT INTO dates (date) VALUES('12-11-20 11:30:11')
于 2012-06-18T09:15:34.107 回答
3

你的语法是错误的。

正确的语法如下所示。

INSERT INTO dates (dates) VALUES ('12-11-20 11:30:11');
于 2012-06-18T09:16:01.287 回答
2

你的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 年前发生了什么。

于 2012-06-18T09:19:20.953 回答
0

好吧,这里有几个有趣的问题需要注意。

首先,在我看来,明确说明将要更新的字段更安全:否则在表结构更改后查询将变得不可用。并且不建议为表的字段和表本身赋予相同的名称:它可能会在以后混淆您。

其次,您的 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');

希望这可以帮助。) 但即使您没有任何问题,我仍然建议您学习插入语法日期和时间文字主题——它会有所帮助。

于 2012-06-18T09:42:12.820 回答