当我按原样插入代码时,我得到NULL
INSERT INTO dates VALUES (date='12-11-20 11:30:11');
当我解雇查询
SELECT * FROM dates;
我得到了
|dates |
| NULL |
答案 0 :(得分:4)
INSERT INTO dates (date) VALUES('12-11-20 11:30:11')
答案 1 :(得分:3)
你的语法错了。
正确的语法如下所示。
INSERT INTO dates (dates) VALUES ('12-11-20 11:30:11');
答案 2 :(得分: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
。我们都知道12年前发生的事情是由于人们没有使用4位数年份。
答案 3 :(得分: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');
希望这会有所帮助。 )但即使你没有任何问题,我仍然建议你研究Insert syntax和Date and time literals主题 - 它会有所帮助。