运算符之间使用两个日期之间的日期的SQL错误

时间:2017-01-27 21:52:47

标签: mysql sql date

我有一个具有开始日期和结束日期的事件表我正在尝试通过给出开始日期和结束日期之间的日期来检索所有记录。

例如:

input type="input" name="Content-Type"

但是响应是语法错误,任何人都可以帮我完成查询

4 个答案:

答案 0 :(得分:2)

根据mysql文档(https://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#operator_between),BETWEN的语法是

expr BETWEEN min AND max

它不是

expr BETWEEN blabla=min AND stuff=max

此外,在所有三个表达式中使用常量是没有意义的,因为在这种情况下,结果将事先知道(总是为TRUE或总是为FALSE),而不必查询表中的值。

如果不知道桌子的结构,很难给你一个例子,但是你可能想要的是

WHERE '2017-01-29' BETWEEN start_date
                   AND     end_date

(假设start_dateend_date是表格中的列)

或类似

WHERE  some_column BETWEEN '2017-01-28' 
                   AND    '2017-01-31' 

(假设some_column是表格中的一列。)

答案 1 :(得分:2)

只列出列。

WHERE '2017-01-29' BETWEEN start_date AND end_date

值来自表,您不会将它们放入查询中。

答案 2 :(得分:1)

我相信您正在尝试查找日期为2017-01-29的所有行,因此,您的查询可能是:

SELECT * 
FROM   `events` 
WHERE   
date = '2017-01-29';

但是,如果您希望所有行的日期在2017-01-28和2017-01-31之间,那么您可以这样做:

SELECT * 
FROM   `events` 
WHERE   
date BETWEEN '2017-01-28' AND '2017-01-31';

答案 3 :(得分:0)

不要将2017-01-29放在WHERE之前,而是按日期输入要过滤的字段的名称,例如EventDate(或者您的字段的名称)。