不受日期和时间的限制,获取上个月的交易

时间:2020-06-29 07:28:15

标签: sql tsql

我想知道是否有更有效的方法来获得以下情形。 检查数据集

https://dbfiddle.uk/?rdbms=sqlserver_2016&fiddle=e18a8c1200c8eac1f3bdca184075358e

无论何时,我都需要使用getdate函数作为基线来获取上个月的数据。 请提出任何建议。

2 个答案:

答案 0 :(得分:0)

-- using datediff
select * from aaa
where datediff(MONTH,aaa.trandate,getdate()) = 1

答案 1 :(得分:0)

最有效的方法是直接进行日期比较:

where trandate < datefromparts(year(getdate()), month(getdate()), 1) and
      trandate >= dateadd(month, -1, datefromparts(year(getdate()), month(getdate()), 1))

这使优化器可以使用基于trandate的索引和分区。此外,对于trandate而言,统计信息更准确-并且功能阻碍了统计信息的使用。

相关问题