SELECT日期与任何元素都不匹配

时间:2014-06-02 17:27:27

标签: mysql sql

我在DDBB上有这条记录:

database

并且想要在其cl_startDate日期和cl_endDate日期之间选择具有日期“2014 -06 -02”的任何记录(这意味着应该选择记录ID 39)。为此,我这样做:

SELECT * FROM class_conf
WHERE ( 2014 -06 -02 >= cl_startDate ) && ( 2014 -06 -02 <= cl_endDate )

理论上,这应该选择在给定日期之间具有cl_startDate和cl_endDate的任何记录,但是它会导致选择0匹配。

我也尝试过这种方式:

SELECT *
FROM class_conf
WHERE 2014 -06 -02 >= cl_startDate &&2014 -06 -02 <= cl_endDate


SELECT *
FROM class_conf
WHERE (cl_startDate <=2014 -06 -02) && ( cl_endDate >=2014 -06 -02 ) 

全部产生0条记录

2 个答案:

答案 0 :(得分:3)

您需要将日期用引号括起来,否则您正在进行数学运算。此外,您的日期值中没有空格。您还希望使用AND而不是&&。这里没有必要使用括号。

SELECT * FROM class_conf
WHERE '2014-06-02' >= cl_startDate AND '2014-06-02' <= cl_endDate

答案 1 :(得分:1)

为什么你的日期之间有空格?

SELECT * FROM class_conf
WHERE ( 2014 -06 -02 >= cl_startDate ) && ( 2014 -06 -02 <= cl_endDate )

这应该有效:

SELECT * FROM class_conf
WHERE ('2014-06-02' >= cl_startDate AND '2014-06-02' <= cl_endDate)

请注意日期如何删除空格,在它们周围加上单引号('),&&现在是AND,并且不需要在每个条件周围使用单独的括号在这种情况下,所以我只留下一个围绕整个( [something AND [another thing] )语句。