按日期过滤查询MySQL

时间:2018-11-14 21:43:40

标签: mysql

我是MySQL的新手,我在根据WHERE子句中的日期进行过滤时遇到困难。

我正在比较date12018-01-012018-31-12。应该显示该范围内的所有日期,但是当我运行查询时,什么都不会显示。

我真的很感谢任何建议。

date1数据类型为longtext,而val数据类型为longtext

date1                Val
2018-01-03           V1
2018-07-05           V2
2018-12-05           V3
2019-01-02           V4
2019-10-03           V5

这是我的SQL查询:

SELECT * FROM tbl1 WHERE date1 >= YEAR '2018-01-01' AND date1<= '2018-12-31' 

预期输出:

    date1                Val
    2018-01-03           V1
    2018-07-05           V2
    2018-12-05           V3

1 个答案:

答案 0 :(得分:0)

您遇到语法错误。

mysql> Select * from foo where date1 >= YEAR '2018-01-01' AND date1<= '2018-12-31' ;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''2018-01-01' AND date1<= '2018-12-31'' at line 1

YEAR '2018-01-01'是无效的语法。必须是YEAR('2018-01-01')

最好用between编写查询。同一件事,更容易阅读,更少的错误机会。

select * from foo where date1 between '2018-01-01' AND '2018-12-31';