我是MySQL的新手,我在根据WHERE
子句中的日期进行过滤时遇到困难。
我正在比较date1
与2018-01-01
和2018-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
答案 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';