我有一个非常简单的问题,但是由于我不熟悉SQL或PL / SQL,所以我不知道要这样做。
在我的Oracle APEX应用程序中,通过将本地数据库/ SQL查询设置为源,我正在将表中的数据加载到CLASSIC REPORT中。
我必须从存储在表中的2列数据中提取4列。我可以使用以下简单语句加载3,而不会出现任何问题:
Select TaskName, DueDate, DueDate - 3 as ReminderDate
from table_name
第四列应为“ RemainingDays”,它等于DueDate-当前日期,我尝试在上述语句中编写DueDate-Sys_date和DueDate-current_date以获取第四列,但可能不是我得到错误的正确方法所有4列。 (我正在以基本的excel / dax方式进行操作)。这里有帮助吗?
答案 0 :(得分:1)
从另一个日期减去一个日期时,Oracle返回一个数字,即两个日期之间的天数。
使用 SYSDATE 或 CURRENT_DATE 时要注意的一件事是,如果用户与数据库不在同一时区,则可能会得到不同的结果。 SYSDATE 返回数据库的当前时间。 CURRENT_DATE 返回用户的当前时间,无论他们处于哪个时区。
如果可能的话,请尝试使用SQL Developer之类的工具构建查询,使其在此处运行,然后在APEX中构建经典报表。如果您仍然收到错误,请共享您收到的错误以及正在使用的查询。
--Start of sample data
WITH
t (task_name, due_date)
AS
(SELECT 'task1', DATE '2020-9-30' FROM DUAL
UNION ALL
SELECT 'task2', DATE '2020-9-28' FROM DUAL)
--End of sample data
SELECT task_name,
due_date,
due_date - 3 AS reminder_date,
ROUND (due_date - SYSDATE,2) AS days_remaining
FROM t;
TASK_NAME DUE_DATE REMINDER_DATE DAYS_REMAINING
____________ ____________ ________________ _________________
task1 30-SEP-20 27-SEP-20 13.66
task2 28-SEP-20 25-SEP-20 11.66