获取上个月的事务,无论日期和时间

bvuwiixz  于 2021-08-09  发布在  Java
关注(0)|答案(2)|浏览(280)

我想知道是否有更有效的方法来实现以下场景。检查数据集
https://dbfiddle.uk/?rdbms=sqlserver_2016&fiddle=e18a8c1200c8eac1f3bdca184075358e
我需要得到上个月的数据使用getdate函数作为基线,无论哪天。有什么建议吗。

dojqjjoe

dojqjjoe1#

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

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

这允许优化器使用基于 trandate . 而且,这些统计数字对我们来说更为准确 trandate 直接——函数阻碍了统计数据的使用。

ncgqoxb0

ncgqoxb02#

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

相关问题