我正在尝试查询Firebird以获取上个月的数据,从第1天到最后一天(30或31,具体取决于月份)。当我使用下面的代码时,它会给我从当前时间转移日期,例如2017年11月14日至2017年12月13日。
代码:
WHERE DATE >= DATEADD(MONTH,-1, CURRENT_TIMESTAMP(2)) AND DATE<= 'TODAY'
所需的输出是11/01/2017 - 11/30/2017
这样做的正确方法是什么?
答案 0 :(得分:4)
我不使用Firebird但是我已经相当广泛地使用了PostgreSQL,我认为这应该可行:
WHERE
DATE BETWEEN dateadd(month, -1, CURRENT_DATE - EXTRACT(DAY FROM CURRENT_DATE) + 1)
AND CURRENT_DATE - EXTRACT(DAY FROM CURRENT_DATE)
<强>解释强>
CURRENT_DATE - EXTRACT(DAY FROM CURRENT_DATE) + 1
应该回到本月的第一天,dateadd
一个月应该将它带到上个月。然后,如果您介于CURRENT_DATE - EXTRACT(DAY FROM CURRENT_DATE)
之间,或者换句话说,在12月13日至13日之间 - 应该是11月的最后一天。穿过我的手指。祝你好运。