從完整日期中提取月份和年份的查詢是什麼。 我的數據是這樣的:2008年1月29日 我嘗試此查詢:在oracle中從日期中提取月份和年份
select ID_NO, CHECKED_DATE, to_date(TO_CHAR(CHECKED_DATE, 'MON-YYYY'), 'MON-YYYY') AS A
from Doctor_Checkup;
但它會給輸出:1/1/2008
預計產量:1-2008
從完整日期中提取月份和年份的查詢是什麼。 我的數據是這樣的:2008年1月29日 我嘗試此查詢:在oracle中從日期中提取月份和年份
select ID_NO, CHECKED_DATE, to_date(TO_CHAR(CHECKED_DATE, 'MON-YYYY'), 'MON-YYYY') AS A
from Doctor_Checkup;
但它會給輸出:1/1/2008
預計產量:1-2008
如果該字段已經是一個日期列,你可以簡單的中科院它噸至格式你想:
select ID_NO,CHECKED_DATE,ltrim(TO_CHAR(CHECKED_DATE,'mm-yyyy'),'0') AS A from Doctor_Checkup;
如果它是一個文本列,您將需要轉換爲日期格式第一:
select ID_NO,CHECKED_DATE,ltrim(TO_CHAR(TO_DATE(CHECKED_DATE,'dd/mm/yyyy'),'mm-yyyy'),'0') AS A from Doctor_Checkup;
爲了得到1-2008
格式使用以下格式修剪前導零:
select ID_NO,CHECKED_DATE,ltrim(TO_CHAR(CHECKED_DATE,'MM-YYYY'),'0') AS A from Doctor_Checkup;
一個日期沒有格式 - 它是stored internally to the database 7字節(代表年,月,日,小時,分鐘和秒),直到你使用的任何用戶界面(即SQL/Plus,SQL Developer,Java等)試圖將它顯示給你,用戶,並將它轉換成你會發現有意義的東西(通常是一個字符串),即日期格式。
有一點需要注意的是,日期總是有年,月,日,小時,分和秒的組件。這樣做的:
to_date(TO_CHAR(CHECKED_DATE, 'MON-YYYY'), 'MON-YYYY')
有效一樣做:
TRUNC(Checked_Date, 'MM')
,並還會有一個日期,小時,分鐘和秒組件,但將已被截斷到一個月的第一天的午夜。用戶界面可能只是將其偏好設置爲不顯示時間組件(但日期仍然有)。
你想要做的是將日期轉換爲一個格式化字符串:
select ID_NO,
CHECKED_DATE,
TRIM(LEADING '0' FROM TO_CHAR(CHECKED_DATE, 'MM-YYYY')) AS A
from Doctor_Checkup;
或
select ID_NO,
CHECKED_DATE,
EXTRACT(MONTH FROM CHECKED_DATE)
|| '-' || EXTRACT(YEAR FROM CHECKED_DATE) AS A
from Doctor_Checkup;
完全相同的解決方案爲礦山,而是兩個分鐘更快,並有關日期和格式的很好的解釋。做得好。 –
你想要一個字符串表示的格式月份和年份[M] M-YYYY 。但是,Oracle的TO_CHAR
只支持MM-YYYY,所以如果有的話,你必須去掉前導零。
兩個解決方案:
trim(leading '0' from to_char(checked_date, 'mm-yyyy'))
或
extract(month from checked_date) || '-' || extract(year from checked_date) from dual
我想你想這個'TO_CHAR(CHECKED_DATE, 'MM-YYYY')作爲了' –