Oracle 中表行的创建日期时间是多少?

Posted

技术标签:

【中文标题】Oracle 中表行的创建日期时间是多少?【英文标题】:What's the created Date-time for Table row in Oracle? 【发布时间】:2011-09-28 03:10:40 【问题描述】:

昨天我的朋友 -BI 专家 - 向我解释了一个预言机问题: 有一个包含大量数据的 oracle 数据库,但它们不会为每个存储每行创建的日期时间的表创建列。 那么在这种情况下 他如何获得每一行的 Created datetime (timestamp) ?

【问题讨论】:

您的意思是在现有数据库中包含大量现有数据吗?是否启用了任何类型的审核? 【参考方案1】:

每一行都有自己的系统更改编号 (SCN)。这准确地识别了数据库中的一个时刻。

首先找出 SCN 并基于它使用 SCN_TO_TIMESTAMP 来获取时间戳

SELECT 
  SCN_TO_TIMESTAMP(ora_rowscn),
  MyTable.*
FROM 
  MyTable

【讨论】:

另外值得注意的是,SCN_TO_TIMESTAMP() 可能不适用于旧数据(但是,ORA_ROWSCN 始终可用)。 另请注意,默认情况下ora_rowscn 记录在块级别(NOROWDEPENDENCIES 是默认的 CREATE TABLE 选项)。参见例如asktom.oracle.com/pls/apex/… 另外这个伪列只会存储“最后更新时间”,而不是“创建时间” 您可能会收到错误消息:supplied scn was beyond the bounds of a valid scn。可能是数据太多或者没有scn的旧记录造成的?无论如何,尝试在单行上运行它 - 最新的。 这个答案对我有用。但是,我建议更改为:SELECT SCN_TO_TIMESTAMP(ora_rowscn), MyTable.* FROM MyTable,以便我们知道时间戳属于哪些行。

以上是关于Oracle 中表行的创建日期时间是多少?的主要内容,如果未能解决你的问题,请参考以下文章

java中表示当前日期的前5年内的随机日期怎么表示

oracle能单独存一个不带时间的日期么?或者是不带日期的时间

sql 从字符串..with毫秒的Oracle日期时间戳格式化。该示例还使用listagg在oracle中具有行的聚合

Oracle中表字段相关操作举例

创建触发器以保存oracle中表的CONSTRAINTs更改

在 Apiary 中表示输入参数是日期/时间的正确格式是啥?