【发布时间】: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 dual或select 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