我正在使用一个将多个字段中的日期存储为整数(模拟字段名称)的数据库:
- 世纪:CC01:20
- 年份:YR01:13
- 月:MO01:7
- 日:DY01:22
我可以这样制定日期:DATE((CC01 * 100 + YR01) || '-' || MO01 || '-' || DY01)
问题是当我需要过滤一系列日期时。例如,如果我想选择过去 90 天,我可以这样写……
WHERE DATE((CC01 * 100 + YR01) || '-' || MO01 || '-' || DY01) >= CURRENT DATE - 90 DAYS
这里的问题是性能。我正在寻找一种有效的方法来编写此公式,以将函数限制在等式的右侧。
这是一个适用于今天日期的示例(我不需要担心世纪,我省略了一些细节):
WHERE CC01 = 20 AND YR01 >= RIGHT(YEAR(CURRENT DATE - 7 DAYS),2) AND MO01 >= MONTH(CURRENT DATE - 7 DAYS) AND DY01 >= DAY(CURRENT DATE - 7 DAYS)
这只有效,因为返回 7 天让我们保持在当前月份和年份。我也不希望有大量的 AND 和 OR(如果可能的话)。