SELECT DECODE((SELECT COUNT(*) FROM dual WHERE TO_CHAR(SYSDATE) BETWEEN TO_CHAR ('01/Jan/2013') AND TO_CHAR('01/Jan/2020')),1,'Yes','No') FROM dual;
Which returns - NO
SELECT DECODE((SELECT COUNT(*) FROM dual where to_date(SYSDATE) BETWEEN to_date ('01/Jan/2013') AND to_date('01/Jan/2020')),1,'Yes','No') FROM dual;
Which returns - YES
From (01/jan/2013) to (10/Jan/2013) - returns No
SELECT DECODE((SELECT COUNT(*) FROM dual WHERE TO_CHAR(SYSDATE) BETWEEN TO_CHAR ('01/Jan/2013') AND TO_CHAR('01/Jan/2020')),1,'Yes','No') FROM dual;
to
SELECT DECODE((SELECT COUNT(*) FROM dual WHERE TO_CHAR(SYSDATE) BETWEEN TO_CHAR ('01/Jan/2013') AND TO_CHAR('10/Jan/2020')),1,'Yes','No') FROM dual;
Returns - No,
But from 11/jan/2020 its returns Yes
SELECT DECODE((SELECT COUNT(*) FROM dual WHERE TO_CHAR(SYSDATE) BETWEEN TO_CHAR ('01/Jan/2013') AND TO_CHAR('11/Jan/2020')),1,'Yes','No') FROM dual;
Which returns - YES
我不明白爲什麼oracle會像這樣返回,請讓我明白這一點。謝謝。爲什麼to_char和to_date返回不同的結果
是的,標記爲關閉。簡而言之,將日期與其他日期進行比較,將字符串與其他字符串進行比較'01/jan/2013'是一個字符串,to_date('01/jan/2013','DD/MM/YYYY')是日期,sysdate是日期。 http://docs.oracle.com/cd/E11882_01/server.112/e26088/sql_elements001.htm#SQLRF0021 –