【发布时间】:2018-04-26 07:50:01
【问题描述】:
我正在尝试获取 current date、week number、first date in the week 和 last date in the week。它下面的 SQL 语句正在运行,但是当我在 Oracle Apex 中运行时,我得到 ORA-01843: not a valid month
declare
date_value char;
week_value pls_integer;
start_date_value char;
end_date_value char;
begin
SELECT
TO_CHAR(TRUNC(TO_DATE(CURRENT_DATE,'MM/DD/YYYY')),'DD.MM.YYYY')
, TO_NUMBER(TO_CHAR(TO_DATE(CURRENT_DATE,'MM/DD/YYYY'),'WW'))
, TO_CHAR(TRUNC(TO_DATE(CURRENT_DATE,'MM/DD/YYYY'), 'IW'),'DD.MM.YYYY')
, TO_CHAR(NEXT_DAY(TRUNC(TO_DATE(CURRENT_DATE,'MM/DD/YYYY'),'IW'),'SUNDAY'),'DD.MM.YYYY')
INTO
date_value
, week_value
, start_date_value
, end_date_value
FROM DUAL;
htp.p('<< '||'Week'|| week_value ||' >> '|| start_date_value ||' - '|| end_date_value);
end;
还尝试使用 sysdate 并且仅在 SQL 中有效,但在 PL/SQL (Oracle Apex) 页面中会引发相同的异常。 提前致谢。
【问题讨论】:
-
如果 CURRENT_DATE 是当前日期,并且是日期数据类型,为什么要通过 TO_DATE 函数运行它?上面有固定格式的图片,这将导致基于格式图片的 NLS 设置的隐式日期到字符串转换,这可能与转换回来的格式图片不匹配。
-
谢谢@Andrew。
标签: sql oracle plsql oracle-apex