gpt4 book ai didi

sql - SCD 日期对的最佳实践(关闭/打开时间戳)

转载 作者:行者123 更新时间:2023-12-01 03:53:14 25 4
gpt4 key购买 nike

在实现时间日期时间对时,哪种方法更好?

方法一

_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 会更可取..

最佳答案

对于连续(例如日期时间或数字度量),我几乎总是推荐半开区间方法(方法 2)。正如您所说,方法 1 往往会产生间隙,或者您需要知道计算终点的确切精度。在方法 2 中计算终点总是更简单。

能够使用的“好处”BETWEEN就我而言,与能够快速确保查询的正确性相比,这是一个非常小的问题。

对于非连续数据(没有时间的日期或离散数字),我可能会恢复使用闭区间。

关于sql - SCD 日期对的最佳实践(关闭/打开时间戳),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20005950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com