我开发使用Oracle10g数据库的特定软件。如果DATE具有特定格式(不是日期),则返回两个日期之间的天数
此软件在DB中有它自己的日期,时间格式: CurrentDate =从01.01.0001开始经过的天数。 这个数字以整数值存储在DB中,例如:当前日期等于735192.
我需要将SYSDATE转换为此格式。如何通过Oracle执行此操作?
我试着写一些功能和SQL requst:
CREATE OR REPLACE
FUNCTION MyDaysBetween(aNow IN NUMBER,aThen IN NUMBER) RETURN NUMBER;
IS BEGIN
IF(aNow > aThen) THEN
RETURN (aNow - aThen);
ELSE
RETURN (aThen - aNow);
END IF;
END MyDaysBetween;
FUNCTION QAZ_SYSDATENOW() RETURN NUMBER; /*Converting SYSDATE(20.11.2013) to number of days since 01.01.0001*/
IS
BEGIN
RETURN SELECT SYSDATE - TO_DATE('01.01.0001','DD.MM.YYYY') FROM DUAL;
END MyDaysBetween;
SELECT * FROM TESTS T WHERE (MyDaysBetween(QAZ_SYSDATENOW(),T.D2) = 5); /*T.D2 contains 15.11.2013 asinteger number of days */
可是,我不工作,我找不到什么是错的。
我建议SYSDATE后以删除括号。 – tvm
我删除它,没有任何改变。如何调试脚本?我如何在运行时查看返回函数? – Alexandr
调试器(Oracle的SQLDeveloper IDE有一个)或dbms_output软件包可以帮助您了解正在发生的事情。 – tvm