我只想根据日的日期条件选择记录,而不检查月和年。
Table structure
------------------------------------
id | user_id | amount | created_on
------------------------------------如果我选择日期15-4月到25-4月,则我需要在4月15日到4月25日、3月15日到3月25日之间记录,依此类推。
使用fetch day from date和与之进行比较似乎非常简单
Select sum(amount) from sales where DATEFORMAT(created_on, %d) >= 15 and DATEFORMAT(created_on, %d) <=25但是如何查找记录当我选择日期28-3月到5-4月时,我需要28-2月到5-3月,28-1月到5-2月的数据。诸若此类
发布于 2017-04-27 15:07:08
如果你在使用php的话。您可以比较最小日期和最大日期,并更改查询,如下所示:
尝试#1:
$min_date = 15;
$max_date = 25;尝试#2:
$min_date = 28;
$max_date = 5;脚本:
if($min_date < $max_date)
{
$query = "Select sum(amount) from sales where DATEFORMAT(created_on, %d) >= $min_date and DATEFORMAT(created_on, %d) <=$max_date";
}
else
{
$query = "Select sum(amount) from sales where DATEFORMAT(created_on, %d) >= $min_date OR DATEFORMAT(created_on, %d) <=$max_date";
}发布于 2017-04-27 15:04:19
您可以使用SQL BETWEEN运算符
Select sum(amount) from sales where created_on BETWEEN '2017/03/28' and '2017/04/05'发布于 2017-04-27 15:06:24
你能试试这个吗?(X1和X2是您的值)
Select sum(amount)
from sales
where
(1= CASE WHEN X2>=X1 THEN 1 ELSE 0 END AND DATEFORMAT(created_on, %d) >= X1 and DATEFORMAT(created_on, %d) <=x2)
OR (1= CASE WHEN X2<X1 THEN 1 ELSE 0 END AND ( DATEFORMAT(created_on, %d) >=X1 OR DATEFORMAT(created_on, %d) <=X2))https://stackoverflow.com/questions/43650706
复制相似问题