对sales.Orders表查询, 返回每月最后一天的订单
在SQL Server 2012中你可以使用EOMONTH函数来处理此任务,像下面这样.
select orderid,orderdate,custid,empid
from sales.Orders
where orderdate=EOMONTH(orderdate);
在SQL Server 2012之前,解决方案会更加复杂, 在日期和时间函数部分,我提供了下面的表达式格式来计算对应于指定时期的月份和最后一天.
DATEADD(month,DATEDIFF(month,'19911231',date_val),'19911231')
此表达式首先计算固定的某月的最后一天(这里是1999年12月31日)与指定日期的差异月数,可称其为diff. 通过添加diff月数到固定日期, 会得到指定日期月份的最后一天,下面是完整的查询解决方案, 仅返回订单日期等于每月最后一天的订单.
select orderid,orderdate,custid,empid
from sales.Orders
where orderdate=DATEADD(month,DATEDIFF(month,'19911231',orderdate),'19911231')