在MYSQL中为TIMEDATE获取NULL值

时间:2012-06-18 09:13:47

标签: mysql insert

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

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

当我解雇查询

SELECT * FROM dates;

我得到了

|dates |
| NULL |

4 个答案:

答案 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 syntaxDate and time literals主题 - 它会有所帮助。