首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL查询在月中的两天之间进行选择

SQL查询在月中的两天之间进行选择
EN

Stack Overflow用户
提问于 2016-12-31 08:51:36
回答 4查看 830关注 0票数 3

我希望有一个SQL查询,在两个月的日期之间进行选择。

假设在下个月的15日到15日之间。

这是为了会计目的

我知道,每个月都有不同的日子,加上30天或31天的开始日期是行不通的,尤其是在2月。我的会计工作是从本月15日到下个月15日。

我对选定日期的当前查询如下

代码语言:javascript
复制
SELECT * FROM lbs_trace_etrack WHERE lbs_date  >=  '" . $dates . "' 
AND lbs_date  <= '" . $datee . "' AND lbs_client='$slcustom1' ORDER BY lbs_date DESC, lbs_time DESC

lbs_date开始应该是每个月的15次,lbs_date结束应该是下个月的15次。

通过将日期定义为下面的工作,但它给了我从11月到现在的日期,我希望它从本月15日开始,因为我们已经过了本月15日。

代码语言:javascript
复制
$first = date('Y-m-15', strtotime("$last -1 month"));
$last = date('Y-m-t'); 

和查询

代码语言:javascript
复制
SELECT * FROM lbs_trace_etrack WHERE lbs_date  >=  '" .    
$first . "' 
AND lbs_date  <= '" . $last . "' ORDER BY lbs_date DESC

基本上,当我们通过本月15日的时候,我需要它来显示当前15,而不是上个月15到现在的用法。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-12-31 09:56:29

如果你真的想要我理解你想要的东西,

代码语言:javascript
复制
   SELECT l.* 
     FROM lbs_trace_etrack l
     JOIN (SELECT s.cd, CASE 
             WHEN s.cd >= DATE(DATE_FORMAT(s.cd,'%Y-%m-15')) 
             THEN DATE(DATE_FORMAT(s.cd,'%Y-%m-15'))
             ELSE DATE_SUB(DATE(DATE_FORMAT(s.cd,'%Y-%m-15')), INTERVAL 1 MONTH) 
               AS start_date
             FROM (SELECT CURDATE() cd) s) d
       ON (TRUE)
    WHERE l.lbs_date  >= d.start_date
      AND l.lbs_date  < d.cd  
      AND l.lbs_client = '$slcustom1' 
 ORDER BY l.lbs_date DESC, l.lbs_time DESC;

请注意,您仍然有PHP变量$slcustom1。带有子选择的连接的动机是只需要调用CURDATE()一次,以避免日期在两个后续调用之间更改的罕见情况。请检查比较<>=等是否符合您的要求。

编辑:--我已经将start_date的计算移到已连接的表中。即使以这种方式,我必须调用DATE(DATE_FORMAT())三次,这比计算每一行的DATE_SUB要好,在这个情况下,我们是在本月的前半部分。

票数 2
EN

Stack Overflow用户

发布于 2016-12-31 09:18:53

您能使用mysql day()函数满足您的需求吗?

例如:

代码语言:javascript
复制
SELECT day("2016.12.15");
       result:
       15

像wise一样,您可以使用这个函数来检查它的"15“

选择日期(currentDate())

票数 0
EN

Stack Overflow用户

发布于 2016-12-31 09:35:02

使用DAY()函数获取特定日期

代码语言:javascript
复制
select * from My_Table where  day(str_to_date(`Date`,'%d-%m-%Y'))  = 1 or day(str_to_date(`Date`,'%d-%m-%Y'))  = 15;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41406857

复制
相关文章

相似问题

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