在实现时间日期时间对时,哪种方法更好?
方法一
_RK FROM_DTTM TO_DTTM
1 01-JAN-2012 00:00:00 31-DEC-2012 23:59:59 ------------> Old record closed out
1 01-JAN-2013 00:00:00 31-DEC-4949 23:59:59 ------------> New active record
与过滤子句一起使用,如下所示:
where FROM_DTTM <= &FILTER_DATE <= TO_DTTM
方法二
_RK FROM_DTTM TO_DTTM
1 01-JAN-2012 00:00:00 01-JAN-2013 00:00:00 ------------> Old record closed out
1 01-JAN-2013 00:00:00 31-DEC-4949 23:59:59 ------------> New active record
与过滤子句一起使用,如下所示:
where FROM_DTTM <= &FILTER_DATE < TO_DTTM
注意事项:
方法 1 与 BETWEEN 子句语法(包括范围)兼容。出于这个原因,我认为这是最好的方法,但是 - 这是我关心的 - 关闭和打开时间戳之间总是存在差距!例如以下将(从业务角度不正确)返回任何内容:
where FROM_DTTM <= '31-DEC-2012 23:59:59.1'dt <= TO_DTTM
不同的数据库在这里会有不同的精度。我想必须有标准(过滤时总是四舍五入到最接近的秒数),但只是想知道是否有任何其他理由支持方法 1(例如提议的双时间“AS OF”语法兼容性)?或者实际上,是否(以及为什么)方法 2 会更可取..