首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql日期范围查询只查日期,不查年月

Mysql日期范围查询只查日期,不查年月
EN

Stack Overflow用户
提问于 2017-04-27 14:58:45
回答 4查看 814关注 0票数 0

我只想根据日的日期条件选择记录,而不检查月和年。

代码语言:javascript
复制
Table structure 
------------------------------------
id | user_id  | amount | created_on
------------------------------------

如果我选择日期15-4月到25-4月,则我需要在4月15日到4月25日、3月15日到3月25日之间记录,依此类推。

使用fetch day from date和与之进行比较似乎非常简单

代码语言:javascript
复制
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月的数据。诸若此类

EN

回答 4

Stack Overflow用户

发布于 2017-04-27 15:07:08

如果你在使用php的话。您可以比较最小日期和最大日期,并更改查询,如下所示:

尝试#1:

代码语言:javascript
复制
    $min_date = 15;
    $max_date = 25;

尝试#2:

代码语言:javascript
复制
    $min_date = 28;
    $max_date = 5;

脚本:

代码语言:javascript
复制
    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"; 
    }
票数 1
EN

Stack Overflow用户

发布于 2017-04-27 15:04:19

您可以使用SQL BETWEEN运算符

代码语言:javascript
复制
Select sum(amount) from sales where created_on BETWEEN '2017/03/28'  and '2017/04/05'

SQL Between Operator

票数 0
EN

Stack Overflow用户

发布于 2017-04-27 15:06:24

你能试试这个吗?(X1和X2是您的值)

代码语言:javascript
复制
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))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43650706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档