'YYYY' 和 'RRRR' 之間的區別我有2個查詢在SQL:有什麼用Oracle SQL
select trunc(to_date('27-Jul-1987'),'YYYY') FROM dual;
和
select trunc(to_date('27-Jul-1987'),'RRRR') FROM dual;
兩者都讓我有同樣的結果。 'RRRR'和'YYYY'有什麼區別?
'YYYY' 和 'RRRR' 之間的區別我有2個查詢在SQL:有什麼用Oracle SQL
select trunc(to_date('27-Jul-1987'),'YYYY') FROM dual;
和
select trunc(to_date('27-Jul-1987'),'RRRR') FROM dual;
兩者都讓我有同樣的結果。 'RRRR'和'YYYY'有什麼區別?
YYYY
給出當前年份爲4位數。
RRRR
格式裝置2位數年的範圍00
到49
被假定爲在當前世紀(即具有相同的前兩個數字作爲當前年),以及給定的年50
通過99
被假定在之前的世紀。
嗯,我從具有DATE列的Oracle表報告,它給了我奇怪的歲月無論我使用rrrr還是yyyy。 選擇IVDATE ,TO_CHAR(IVDATE, 'YYYY-MM-DD')作爲YYYYdate ,TO_CHAR(IVDATE, 'RRRR-MM-DD')作爲RRRRdate 從DODGYTABLE 其中IVDATE
此:
SQL> select to_char(to_date('72-01-01','rrrr-mm-dd'),'yyyy') from dual;
會給你:
但這:
SQL> select to_char(to_date('72-01-01','yyyy-mm-dd'),'yyyy') from dual;
會給你:
0072
如果該日期是不指定的第一個2個位數的年份轉換:
試試這個示例代碼:
SELECT TO_DATE ('010199', 'MMDDYYYY') AS date_a,
TO_DATE ('010199', 'MMDDYY') AS date_b,
TO_DATE ('010199', 'MMDDRR') AS date_c,
TO_DATE ('010199', 'MMDDRRRR') AS date_d
FROM DUAL;
結果當2014年12月1日運行:
DATE_A DATE_B DATE_C DATE_D
--------- --------- --------- ---------
1/1/0099 1/1/2099 1/1/1999 1/1/1999
此Oracle link給出了一個偉大的說明和例子。
從上面link:
- 如果指定的兩位數的年份是00到49,然後
- 如果當前年份的最後兩個數字是00到49,那麼返回的年份與當年的前兩位數字相同。
- 如果當年的最後兩位數字是50到99,則返回年份的前兩位數字比當前年份的前兩位數字大1。
- 如果指定的兩位數的年份是50〜99,然後
- 如果當前年的最後兩位數字是00至49,則返回的一年中的前2位是1以上本年度的前兩位數字。
- 如果當年的最後兩位數字是50到99,那麼返回的年份與當年的前兩位數字相同。
即使你的代碼相似,你已經張貼在這裏什麼(我說的類似,因爲SQL'select'不是在PL/SQL塊允許的,而不是'選擇into'必須使用)可能位於PL/SQL塊中,你的問題根本不是PL/SQL相關的,而是Oracle SQL問題。 – user272735
Rtm。速度更快! http://download.oracle.com/docs/cd/E11882_01/server.112/e17118/sql_elements004.htm#i34924 – zep