有人可以解释以下内容吗?
and effective_DATE < (TRUNC(CURRENT_DATE) - NUMTODSINTERVAL(EXTRACT(DAY FROM TRUNC( CURRENT_DATE)), 'DAY' ) + INTERVAL '1' DAY)
我无权访问数据库,因此无法自己运行以进行测试。
我了解到NUMTODSINTERVAL将数字转换为INTERVAL DAY TO SECOND文字。
所以说如果我今天运行此查询,它将检查生效日期是否少于2019年2月5日-将5天转换为秒加1天?
那么,2月5日-000000005 + 1 = 2月6日?
这是正确的还是我看错了? 还有为什么开发人员会使用这种方法?
答案 0 :(得分:1)
NUMTODSINTERVAL的第二个参数指定单位。 “ INTERVAL DAY TO SECOND”是一个令人困惑的名称-仅表示一个抽象的时间间隔,在这种情况下为5天。
EXTRACT(DAY FROM TRUNC( CURRENT_DATE))
查找该月的当前日期(今天为5)
NUMTODSINTERVAL(5, 'DAY')
创建的间隔为+5天
今天说,就是2月5日,减去5天(即1月31日),然后加上1天(即2月1日)。
似乎正在尝试查找该月的第一天,因为它会简单得多:
and effective_DATE < TRUNC(CURRENT_DATE, 'MM')