2016-11-01 220 views
1

我有一个计划过程中不断更新与当前时间戳空timestamp列,但有趣的是我看到这样的矛盾:奇怪的行为

的记录enter image description here

各是更新通过单个更新到单个或多个行:

update timestamp = current_timestamp where row_condition = true; 

但是这可怎么回事,甲骨文current_timestamp查询不同呼叫表现不同?一个输出完全正确的时间戳,但从其他地方输出的东西(31-DEC-69)?

+0

行为有什么不同?另外,你的意思是说你有一个过去将近50年的过程?我不相信。 (或者,你是说31-DEC-69是不正确的,你不知道它为什么插入?) – mathguy

+0

@mathguy你是对的问题不是很清楚,所以我更新它。我不知道current_timestamp给出了31-DEC-69 .. – Dreamer

+0

current_timestamp是一个带时区的时间戳,我猜这个列也是。这意味着创建该记录的会话的时区是格林威治标准时间4(美国东海岸?),并且正在插入1970年1月1日的纪元时间。 –

回答

0

这听起来好像您可能具有该列的DEFAULT值。插入行的时间戳列未提供值,因此已使用默认值填充行。

尝试select data_default from all_tab_columns where table_name = 'YOUR_TABLE'; YOUR_TABLE是表名(请记住用大写字母写)。这会告诉你是否有该列的默认值。如果你喜欢,你可以在where子句中添加列名 - 但如果你不这样做,你可能会发现更多的信息,你可能没有意识到。

+0

运行查询,结果为空。该列没有默认值.. – Dreamer

+0

桌子上是否有触发器? – mathguy

+0

无触发器。哦,忘了提及的tomcat和甲骨文在CENTOS,但应用程序运行在Windows中,但我不认为这是问题... – Dreamer