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

标签 sql sql-server-2012

我正在尝试获取 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())

关于sql - SQL 是否自动计算每月的开始和结束日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29975893/

相关文章:

mysql - 在 php-my-admin 中创建触发器

sql - 在 SQL 中执行数据透视表的 JOIN

sql - 如何确定 SQL Server 2012 中是否存在序列?

SQL Server 在子查询中重用别名

sql - 在 Mac/Windows/Linux 上使用 GNU C 库和其他数据结构库。?

mysql - 在 mysql 中哪个 inner join sql 是最有效和最好的?

sql - 通过选择查询将一列拆分为两列

sql - 如何使用简单的 Join 语句更新具有不同值的列?

sql-server - "Conversion failed because the data value overflowed the specified type"错误仅适用于同一个表的一列

SQL Server 反向运行总计