sql之SQL 是否自动计算每月的开始和结束日期

davidwang456 阅读:30 2025-02-15 21:57:57 评论:0

我正在尝试获取 1 个月内销售的总销售额。例如,从 2015 年 4 月 1 日到 2015 年 4 月 30 日。

我得到的跨度是 3/30/15 - 4/30/15。

这是我的 SQL:

    SELECT  Customer.custno 
      , Customer.enteredDate AS 'Date Entered' 
      , COUNT(BasicPolInfo.polid) AS 'Number of Policies' 
      , SUM(COUNT(BasicPolInfo.polid)) OVER (ORDER BY Customer.custno ROWS  
    BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) AS TotalAmount 
    FROM    Customer 
        INNER JOIN BasicPolInfo ON Customer.custid = BasicPolInfo.custid 
    WHERE   BasicPolInfo.polid IS NOT NULL 
        AND Customer.firstname IS NOT NULL 
        AND Customer.enteredDate BETWEEN DATEADD(MONTH, -1, GETDATE()) AND 
        DATEADD(MONTH, 0, GETDATE()) 
    GROUP BY Customer.custno 
      , Customer.firstname 
      , Customer.lastname 
      , Customer.entereddate 
    ORDER BY Customer.enteredDate ASC 

我得到的结果是从 2015-04-30 到 2015-03-30 的日期。我正在尝试将 2015-04-30 改为 2015-04-01。

下个月也是从 2015-05-31 到 2015-05-01

任何帮助将不胜感激!谢谢!

请您参考如下方法:

因为你在 2012 年,你可以使用 EOMONTH()

WHERE Customer.enteredDate >= DATEADD(DAY, 1, EOMONTH(GETDATE(), -1))  
AND  < DATEADD(DAY, 1, EOMONTH(GETDATE())) 

或者您可以只匹配月份和年份。

where month(Customer.enteredDate) = month(getDate())  
and year(Customer.enteredDate) = year(getDate()) 


标签:日期
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号