簡體   English   中英

Oracle - 比較日期

[英]Oracle - Comparing dates

我有這個Oracle程序:

CREATE OR REPLACE PROCEDURE xmas
IS
    CURSOR curUser IS SELECT userID, coins FROM Users;
    thisUser curUser%ROWTYPE;
    d VARCHAR(7);
    CURSOR curDate IS SELECT TO_CHAR(sysdate, 'DD-MON') FROM DUAL;
BEGIN
    OPEN curDate;
    FETCH curDate INTO d;
    CLOSE curDate;
    IF ((TO_DATE(d)) = (TO_DATE('25-DEC'))) THEN
        OPEN curUser;
        LOOP
            FETCH curUser INTO thisUser;
            EXIT WHEN (curUser%NOTFOUND);
            thisUser.coins := thisUser.coins + 5.00;
            UPDATE Users SET coins = thisUser.coins WHERE userID = thisUser.userID;
        END LOOP;
        CLOSE curUser;
    END IF;
END xmas;

當我調用它時,我收到此錯誤:

ORA-01840:日期格式的輸入值不夠長。

嘗試了幾個小時的不同比較方法,沒有其他工作。 有什么問題??

您需要為Oracle指定日期格式,以了解實際上'25 -DEC'的含義。

select TO_DATE('25-DEC', 'DD-MON') from dual;

問題應該放在這一行:

    IF ((TO_DATE(d)) = (TO_DATE('25-DEC'))) THEN

作為一個注釋,在我看來,你也做了很多不必要的轉換。 我不知道這是否屬於教育嘗試,但為什么不運行以下更新:

update USERS 
set
  coins = coins + 5
where
  to_char(sysdate, 'DD-MON') = '25-DEC';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM