【问题标题】:Oracle SQL SYSDATE, CURRENT_TIMESTAMP, LOCAL_TIMESTAMP all returning nullOracle SQL SYSDATE、CURRENT_TIMESTAMP、LOCAL_TIMESTAMP 都返回 null
【发布时间】:2020-08-03 20:21:46
【问题描述】:

我正在开展一个跟踪报销的项目,我正在尝试存储有关何时将特定的报销请求放入数据库的信息。我遇到的问题是我无法获得时间戳,因为我没有得到任何回报。到目前为止,我已经尝试了几件事,例如

SELECT SYSDATE FROM dual;
SELECT TO_CHAR(CURRENT_DATE, 'MM-DD-YYYY HH24:MI:SS') FROM dual;
SELECT CURRENT_TIMESTAMP FROM dual;

但它们都只是返回一个空视图,没有抛出异常。我试过调查它,但我没有成功。我正在使用 Oracle SQL,我的数据库由 AWS 托管。另一个奇怪的是,所有这些最初在编辑器中显示为蓝色,就像一个保留字,然后很快变成黑色,就像一个表名,这让我怀疑它是否只是 Oracle SQL 开发人员软件在起作用,但我尝试重新启动到没有有用,所以我被卡住了。

编辑:使用 JDK 1.8,Oracle SQL Developer 版本 19.2.1

【问题讨论】:

  • 其他客户端会发生什么,例如 SQL*Pus? select * from dualselect date '2020-01-01' 显示什么?如果只是SQL Developer,是哪个版本,哪个JDK版本,你是作为脚本运行还是作为语句运行?
  • select date '2020-01-01' 表示缺少“FROM” select date '2020-01-01' from dual display date'2020-01-01' 作为列名,没有数据。我把它作为一个语句运行,没有尝试过其他客户端,因为我没有任何其他客户端
  • 也许有一个名为dual 的表在您的架构中没有行? select * from dual 显示什么? select * from all_tables where table_name = 'DUAL' 显示什么?如果有这样的本地表,要么插入一行,要么删除该表。如果您的架构中没有双表,则 DBA 可能已从系统双表中删除了该行,您必须重新插入一行。
  • 大概如果问题出在dual 上,然后从中选择任何东西,例如count(*) 将演示问题,而不仅仅是日期/时间函数。
  • 您可以尝试使用 ALTER SYSTEM 来设置 FIXED_DATE (docs.oracle.com/cd/E18283_01/server.112/e17110/…)。如果这样可行,那么问题很可能是底层操作系统没有向 Oracle 返回有效的时钟时间。

标签: sql oracle oracle-sqldeveloper


【解决方案1】:

这是因为在您当前的架构中创建了名为“dual”的表。您可以使用select * from all_tables where table_name = 'DUAL'; 进行检查

在您的架构中删除 DUAL 表,然后您的查询将起作用。

【讨论】:

    猜你喜欢
    • 2013-07-29
    • 2021-12-29
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-06
    • 1970-01-01
    • 2018-10-10
    相关资源
    最近更新 更多