Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何选择从上个月开始到12个月前的记录?_Mysql_Select - Fatal编程技术网

Mysql 如何选择从上个月开始到12个月前的记录?

Mysql 如何选择从上个月开始到12个月前的记录?,mysql,select,Mysql,Select,我需要选择从上个月开始到12个月前的所有记录。因此,当现在是2015-07-09时,我需要选择2014-08-01和2015-06-30之间的记录。使用此查询: select * from table_name where date_column between date_sub(ADDDATE(LAST_DAY(SUBDATE(curdate(), INTERVAL 11 MONTH)), 1), interval 1 month) , last_day(date_sub(curdate(

我需要选择从上个月开始到12个月前的所有记录。因此,当现在是2015-07-09时,我需要选择2014-08-01和2015-06-30之间的记录。

使用此查询:

select * from  table_name where date_column between date_sub(ADDDATE(LAST_DAY(SUBDATE(curdate(), INTERVAL 11 MONTH)), 1), interval 1 month) ,  last_day(date_sub(curdate(), interval 1 month))

这将使你到上个月底为止

select ... from table where mydate < date_sub(curdate(), interval day(curdate())-1 day)

这应该为你指明正确的方向,让你知道如何学习日期数学,这样你就可以知道如何做才能同时测试12个月前的开始提示:从我上面的表达式中减去12个月,然后测试大于或等于该值。

根本没有研究过日期加函数?你可能是指2014-07-01如果您打算覆盖12个月,则为2015-06-30。此处date_列是表中包含日期类型的日期值的列。这将无法正常工作,因为它将给出2014-07-09到2015-06-09的日期值。也无法正常工作。ADDDATE和SUBDATE,我想你指的是date_add和date_sub。为什么在第一部分有两个日期减法,减去11个月,然后减去一个月。找到一个月的最后一天,然后再加上一个月,是行不通的,因为对于像二月这样的一个月,你会得到3月28日,而不是3月的最后一天。为什么不在13个月前的最后一天呢?使用BETWEEN也不起作用,因为它测试了13个月前的>=和本月的最后一天,以及<本月的第一天。我在我的mysql版本5.6上检查了这一点,所有这些都按照问题中的要求正常工作。你能试着只选择日期吗?谢谢,但我得到了错误:1064-你的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解在第1行“last_daydate_Subcurvate,interval 1 month LIMIT 0,25”附近使用的正确语法。不幸的是,我被卡住了,因为我不太擅长sql查询。我可以处理一些简单的问题,但这对我来说太难了:似乎比我最初想象的要难: