从Firebird的第一天到最后一天获取上个月的数据

时间:2017-12-13 17:01:01

标签: sql firebird

我正在尝试查询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

这样做的正确方法是什么?

1 个答案:

答案 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月的最后一天。穿过我的手指。祝你好运。