我想知道是否有更有效的方法来实现以下场景。检查数据集https://dbfiddle.uk/?rdbms=sqlserver_2016&fiddle=e18a8c1200c8eac1f3bdca184075358e我需要得到上个月的数据使用getdate函数作为基线,无论哪天。有什么建议吗。
dojqjjoe1#
最有效的方法是直接日期比较:
where trandate < datefromparts(year(getdate()), month(getdate()), 1) and trandate >= dateadd(month, -1, datefromparts(year(getdate()), month(getdate()), 1))
这允许优化器使用基于 trandate . 而且,这些统计数字对我们来说更为准确 trandate 直接——函数阻碍了统计数据的使用。
trandate
ncgqoxb02#
-- using datediff select * from aaa where datediff(MONTH,aaa.trandate,getdate()) = 1
2条答案
按热度按时间dojqjjoe1#
最有效的方法是直接日期比较:
这允许优化器使用基于
trandate
. 而且,这些统计数字对我们来说更为准确trandate
直接——函数阻碍了统计数据的使用。ncgqoxb02#