Php Mysql日期范围查询仅检查日期,不检查月份和年份
我只希望根据日期条件选择记录,而不检查月份和年份Php Mysql日期范围查询仅检查日期,不检查月份和年份,php,mysql,date,date-range,Php,Mysql,Date,Date Range,我只希望根据日期条件选择记录,而不检查月份和年份 Table structure ------------------------------------ id | user_id | amount | created_on ------------------------------------ 如果我选择日期4月15日至4月25日,那么我需要记录4月15日至4月25日、3月15日至3月25日,依此类推 从日期中提取日期并将其与 Select sum(amount) from sales
Table structure
------------------------------------
id | user_id | amount | created_on
------------------------------------
如果我选择日期4月15日至4月25日,那么我需要记录4月15日至4月25日、3月15日至3月25日,依此类推
从日期中提取日期并将其与
Select sum(amount) from sales where DATEFORMAT(created_on, %d) >= 15 and DATEFORMAT(created_on, %d) <=25
但是如何查找记录当我选择日期3月28日至4月5日时,我需要2月28日至3月5日、1月28日至2月5日的数据。。依此类推您可以在运算符之间使用SQL
Select sum(amount) from sales where created_on BETWEEN '2017/03/28' and '2017/04/05'
来源你能试试这个吗?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))
如果您使用的是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";
}
使用此选项仅从时间戳中提取日期,然后将其与您的需求进行比较
选择SUBSTRINGdateCURRENT_时间戳,9,2,SUBSTRINGdate'2017-04-27',9,2
产出:27、27
干杯 在这种情况下,如果没有月份,您就无法进行检查:@Goikiu 2月28日、1月28日等的数据如何?我认为如果不使用完整日期,您无法实现这一点。但是,使用完整日期与您要求的日期不同;查看op要求的解决方案,无需年检和月检。您也在比较月。。。2月28日至3月5日、1月28日至2月5日的数据如何?仅使用MySQL无法实现这一点。您可以通过在PHP中循环来获得总和。得到你想要的具体日期,一旦完成,你就可以处理结果。您仍然可以在查询中使用此SQL查询tho。