STR_TO_DATE()出现意外行为

时间:2014-06-06 18:07:12

标签: mysql datetime

以下内容从我的数据库中返回一串行:

USE test;
SELECT * FROM aaaa
WHERE dddd BETWEEN (NOW() - INTERVAL 42 DAY) AND (NOW() + INTERVAL 42 DAY)

但由于原因,我不明白以下查询不会返回任何内容:

USE test;
SELECT * FROM aaaa
WHERE dddd BETWEEN (STR_TO_DATE('2014/6/6', '%Y,%m,%d') - INTERVAL 42 DAY) AND (STR_TO_DATE('2014/6/6', '%Y,%m,%d') + INTERVAL 42 DAY)

它不应该返回相似数量的行吗?它是在同一天那么为什么,当我将它转换为datetime时,它什么都没有返回?我没有错。

2 个答案:

答案 0 :(得分:0)

你传递了一个/ - 分开的日期,但告诉MySQL它是, - 分开了。由于您的字符串中没有,,因此格式不适用,并且您的日期无效。

尝试

STR_TO_DATE('2014/6/6', '%Y/%m/%d')

,而不是...

“无效 - 42天=无效”,而不是42天前。

答案 1 :(得分:0)

你应该使用

STR_TO_DATE('2014/6/6', '%Y/%m/%d')

请注意日期格式中的/而不是,。 ;)