另一个 SELECT 中的 SYSDATE FROM DUAL

ast*_*rak -2 sql plsqldeveloper

我的选择有时间问题。DB 中的时间与系统时间不同,所以我想我需要使用SELECT SYSDATE FROM DUAL但它在另一个选择中不起作用。我使用 PL/SQL 开发人员。

SELECT t.something1,
       ROUND((TRUNC(SELECT SYSDATE FROM DUAL) - 1 + 2),1) AS NAME
FROM customers t
WHERE t.something1 = ROUND((TRUNC(SELECT SYSDATE FROM DUAL) - 1 + 2),1);
Run Code Online (Sandbox Code Playgroud)

我也尝试声明新变量,但我总是收到错误消息。

DECLARE
day DATE
SELECT SYSDATE
INTO day
FROM DUAL
SELECT t.something1,
       ROUND((TRUNC(day)- 1 + 2),1) AS NAME
FROM customers t
WHERE t.something1 = ROUND((TRUNC(day) - 1 + 2),1);
Run Code Online (Sandbox Code Playgroud)

tof*_*der 5

仅当您没有可供选择的表时,才必须使用SELECT SYSDATE FROM DUALget SYSDATE。这是因为 aSELECT不带 aFROM对 Oracle 无效,所以当你想使用 SQL 函数而你没有表时,你必须使用DUAL,它是一个特殊的单行单列(命名DUMMY)表。唯一的行具有值X