我在DDBB上有这条记录:
并且想要在其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条记录
答案 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] )
语句。