我看到這個question 所以我對這個問題有一個疑問: 我在下面的查詢中得到了不同的結果。與sysdate的to_date函數問題
SELECT TO_CHAR(to_date(sysdate, 'DD-MON-yy'), 'DAY'),
TO_CHAR(to_date(sysdate, 'DD-MON-yyyy'), 'DAY'),
TO_CHAR(to_date(sysdate, 'DD-MON-rr'), 'DAY'),
TO_CHAR(to_date(sysdate, 'DD-MON-rrrr'), 'DAY')
FROM dual;
輸出逐列:提前
TUESDAY SUNDAY TUESDAY TUESDAY
請幫幫我,謝謝。
EDIT
我寫傳遞日期用於找到天下面給出一個簡單的程序:
SET serveroutput ON;
CREATE OR REPLACE
PROCEDURE simple_test
(
date_in IN VARCHAR2)
IS
v_date DATE := to_date(date_in,'dd-mon-yyyy');
v_day VARCHAR2(10):=TO_CHAR(v_date,'day');
BEGIN
dbms_output.put_line('the day of given date is '||v_day);
END;
/
EXEC simple_test(SYSDATE);
anonymous block completed
the day of given date is sunday
EXEC simple_test('01 -JAN-2013');
anonymous block completed
the day of given date is tuesday
爲什麼會發生這種情況?
仔細閱讀回答其他問題你會看到sysdate已經是一個日期。不要使用to_date(sysdate,...) - 只是使用sysdate ... –
[to \ _date函數與sysdate]的可能重複(http://stackoverflow.com/questions/14108022/to-date-function- with-sysdate) –