我有一个名为CO_EXCEPT_META_ST_LG
的表,它位于一个名为POMSUSERPRD
的模式下。
在此表中,有两列:
LAST_CHANGED_DATE
LOG_ENTRY_TIMESTAMP
两者的数据类型均为TIMESTAMP(6) WITH TIMEZONE
。两列的条目的格式为:05/03/2019 09:37:35.849116 +00:00
(夏时制的+00:00
更改为+01:00
)
通常,当使用像<
或>
这样的命令时,我必须格式化时间戳如下:TO_TIMESTAMP_TZ('14/11/2021 20:32:07.165000 +01:00', 'DD/MM/YYYY HH24:MI:SS.FF TZH:TZM')
该表具有如下条目:
| 最后更改日期|日志_录入_时间戳| LOG_ENTRY_TIMESTAMP |
| - -----|- -----| ------------ |
| 2019 - 05 - 03 09:37:35.849116 +00:00| 2019 - 05 - 03 09:37:35.849116 +00:00| 05/03/2019 09:37:35.849116 +00:00 |
| 12/03/2019 17:13:54.187714 +00:00| 12/03/2019 17:13:54.187714 +00:00| 12/03/2019 17:13:54.187714 +00:00 |
| 2019 - 08 - 04 11:38:04.267723 +00:00| 2019 - 08 - 04 11:38:04.267723 +00:00| 08/04/2019 11:38:04.267723 +00:00 |
| 2022年9月28日22:00:26.654732 +01:00| 2022年9月28日22:00:26.655739 +01:00| 28/09/2022 22:00:26.655739 +01:00 |
通常,对于任何条目,列LAST_CHANGED_DATE
和LOG_ENTRY_TIMESTAMP
之间没有差异。不过,偶尔也会有;从上表中的EXCEPT_ID
-COM_002913
可以看出。
如果LAST_CHANGED_DATE和LOG_ENTRY_TIMESTAMP列之间的差值不为'0',是否有方法从该表中提取所有条目?(如果我们假设上面的示例表是完整的数据集,答案将是COM_002913
)。
我写了下面的查询,它为我提供了所有条目的时间戳之间的差异:SELECT EXCEPT_ID, LAST_CHANGED_DATE - LOG_ENTRY_TIMESTAMP AS Difference
FROM POMSUSERPRD.CO_EXCEPT_META_ST_LG
但这给了我超过14000个条目。(COM_002913
的差值表示为-00 00:00:00.001007
)
我尝试添加WHERE
子句(WHERE DIFFERENCE <> '0'
),但收到以下错误:
ORA-06553:PLS-306:对“OGC_DIFFERENCE”的调用中的数字、类型或参数错误。
1条答案
按热度按时间ds97pgxw1#
您可以检查时间戳是否不相等:
其中,对于样本数据:
输出:
| 差异| DIFFERENCE |
| - -----| ------------ |
| 000000000 00:00:00.001007000| -000000000 00:00:00.001007000 |
fiddle