表达解释
Expression explanation
我现在支持由其他人开发的报告。 WHERE 子句包含以下 2 个语句。我不明白每个人的作用以及每个人的各个部分的作用。如果能帮助理解这些陈述,我们将不胜感激。谢谢
and rd.system_ci_date >= ADD_MONTHS(date - EXTRACT(day FROM date) + 1,-1)
and (rd.system_ci_date - rd.ci_date) DAY(4) > 1
ADD_MONTHS(date - EXTRACT(day FROM date) + 1,-1)
returns 上个月的第一天,效率稍微高一点的版本是 ADD_MONTHS(date - (EXTRACT(day FROM date) - 1),-1)
(rd.system_ci_date - rd.ci_date) DAY(4)
returns INTERVAL 中两个日期之间的差异(如果间隔超过 9999 天,将失败)。它与 rd.system_ci_date - rd.ci_date
相同,其中 returns 一个 INT。
也许重写为
and rd.system_ci_date >= ADD_MONTHS(date - (EXTRACT(day FROM date) -1) ,-1)
and rd.system_ci_date > rd.ci_date + 1
比较容易理解
rd.system_ci_date是今天的日期
ADD_MONTHS(date - EXTRACT(day FROM date) + 1,-1)
即 return 上个月的第一天。
(rd.system_ci_date - rd.ci_date) DAY(4) > 1
这给出了区别。
DAY(4)
定义 9999 天
我现在支持由其他人开发的报告。 WHERE 子句包含以下 2 个语句。我不明白每个人的作用以及每个人的各个部分的作用。如果能帮助理解这些陈述,我们将不胜感激。谢谢
and rd.system_ci_date >= ADD_MONTHS(date - EXTRACT(day FROM date) + 1,-1)
and (rd.system_ci_date - rd.ci_date) DAY(4) > 1
ADD_MONTHS(date - EXTRACT(day FROM date) + 1,-1)
returns 上个月的第一天,效率稍微高一点的版本是 ADD_MONTHS(date - (EXTRACT(day FROM date) - 1),-1)
(rd.system_ci_date - rd.ci_date) DAY(4)
returns INTERVAL 中两个日期之间的差异(如果间隔超过 9999 天,将失败)。它与 rd.system_ci_date - rd.ci_date
相同,其中 returns 一个 INT。
也许重写为
and rd.system_ci_date >= ADD_MONTHS(date - (EXTRACT(day FROM date) -1) ,-1)
and rd.system_ci_date > rd.ci_date + 1
比较容易理解
rd.system_ci_date是今天的日期
ADD_MONTHS(date - EXTRACT(day FROM date) + 1,-1)
即 return 上个月的第一天。
(rd.system_ci_date - rd.ci_date) DAY(4) > 1
这给出了区别。
DAY(4)
定义 9999 天