如何在sql server中实现闰年90天和91天的总和

时间:2016-10-10 09:45:53

标签: sql-server

我的表名是 C_Payment_Service_Fee ,而且表中包含的数据

select top 10 * from c_payment_service_fee
amount        crn_dt                payment_mode
19.99   2015-08-11 23:06:58.877         CC
19.99   2015-05-11 13:30:59.603         CC
39.95   2016-06-29 10:26:09.380         CC
29.99   2015-09-13 22:22:57.703         CC
24.99   2016-04-15 14:59:22.130         CC
22.49   2014-08-29 15:09:39.230         CC
24.99   2013-01-15 15:51:22.097         CC
26.95   2016-07-06 10:26:04.507         CC
14.99   2011-12-15 17:53:17.527         CC
15.99   2014-04-09 11:51:27.377         CC

现在我需要从每年的1月1日到3月31日总和(金额)。

3 个答案:

答案 0 :(得分:0)

DATEDIFF(dd, @from, @to)

这将给出两个日期之间的天数

答案 1 :(得分:0)

怎么样

<div id="mailPreviewTarget" style="padding: 10px; overflow: auto;">

    Sample Text
    <p></p>

    <img src="http://.../track/0/0.png">
    <div>

        <a href="http://.../unsubscribe/0/0">Unsubscribe</a>

    </div>

</div>

能让你更近一点吗?

答案 2 :(得分:0)

措辞&#34;每年&#34;有点不清楚 - 我不能告诉你是否要按年分组。

如果您只想一次性支付所有1月至3月的金额:

SELECT SUM(amount) AS total_amount
FROM c_payment_service_fee
WHERE MONTH(crn_dt) BETWEEN 1 AND 3;

如果您想分别查看每年的1月至3月总计,请添加年份和GROUP BY子句:

SELECT SUM(amount) AS total_amount, YEAR(crn_dt) as crn_yr
FROM c_payment_service_fee
WHERE MONTH(crn_dt) BETWEEN 1 AND 3
GROUP BY YEAR(crn_dt);

请注意,在WHERE子句中使用MONTH()函数会使查询成为非SARGable。 SQL Server无法在不提取每个crn_dt值然后对它们运行MONTH()的情况下评估WHERE子句。基础表越大,非SARGability的性能损失就越严重。