在mysql中是否有办法可以执行类似
的操作选择* FROM table WHERE(YEAR(Date)=' $ year1' AND MONTH(Date)= ' $ month1')TO(年(日期)=' $ year2'和月(日期)=' $ month2');
我是编程新手,非常感谢任何帮助或建议。谢谢。
答案 0 :(得分:2)
SELECT *
FROM table
WHERE Date BETWEEN STR_TO_DATE('$year1 $month1', '%Y %m') AND
STR_TO_DATE('$year2 ($month2+1)', '%Y %m')
实际上,使用BETWEEN
可能包括您不想要的下一个月的第一天。在这种情况下,您只需使用>
和<
运算符:
SELECT *
FROM table
WHERE Date >= STR_TO_DATE('$year1 $month1', '%Y %m') AND
Date < STR_TO_DATE('$year2 ($month2+1)', '%Y %m')
从this resource我们发现:
STR_TO_DATE()将输入字符串未提供的所有未完成日期值设置为零。
如果您希望获得2016年2月1日至2016年3月31日(含)的范围,那么我的解决方案是在之后或 2月1日之后取任何日期 之前 4月 1。
答案 1 :(得分:1)
SELECT *
来自table
WHERE(date_field BETWEEN'date1'和'date2')