sql - 如何在 Oracle 12c 中使用时间有效性?

标签 sql oracle oracle11g oracle12c

如何在 Oracle 11g 中设计一个表,以便以后与 Oracle 12c 中新的“时间有效性”特性兼容?

Oracle 12c 的在线文档在 SQL 语言指南 ( http://docs.oracle.com/cd/E16655_01/server.121/e17209/statements_7002.htm#CJADHJHB ) 中指定了如何定义时间有效性

ALTER TABLE my_table ADD (PERIOD FOR my_valid_time (my_valid_start, my_valid_end) );

因此,可以使用 11g 中已有的旧的 valid_from 和 valid_till 列,并将它们加强到 12c 中的适当时期,对吗?

我继承了使用固定魔法日期表示“永远”和“永远”的数据库,例如 DATE '1900-01-01'DATE '3999-12-31' .显然,12c 使用 NULL反而。

那么,我们是否必须放弃使用固定的魔法日期并切换到 NULL?日期?

最佳答案

是的,您将能够在 12c 中更改表以启用时间有效性(请参阅文档的 ALTER TABLE 部分:http://docs.oracle.com/cd/E16655_01/server.121/e17209/statements_3001.htm#CJAEGCFI)

它的工作原理是将您的 where 子句转换为 "<="and "> or is null"子句,因此如果您不想更改固定日期,则无需更改。

Tom Kyte 今天刚刚在他的博客上发布了有关此内容的一些优秀示例:
http://tkyte.blogspot.com/2013/07/12c-flashforward-flashback-or-see-it-as.html

关于sql - 如何在 Oracle 12c 中使用时间有效性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17344158/

相关文章:

SQL 心理 block - 检查一个时间段是否与另一个时间段重叠

sql - 在 SQL Server 中将行数据转换为列

sql - 下一个 基于当前日期的下一周的某一天(具体来说,下一次出现的星期三)

SQL Plus SP2-0606

sql - 正则表达式中的多种模式

c# - 如何在c#或sql中从同一个表中不同条件下获取通用数据

oracle - ORA-02069 global_names 参数必须为此操作设置为 TRUE

oracle - Oracle ADF 11g 在 Java EE 框架中处于什么位置?

python - SQLAlchemy - 获取表的创建日期

sql - 我可以跳过我选择的连接吗?