Oracle時間函式 to_char()及常用時間格式
TO_CHAR({ datetime | interval } [, fmt [, 'nlsparam' ] ])
Oracle TO_CHAR()函式返回以指定格式表示的字串DATE或INTERVAL值。
{ datetime | interval }是一個DateTime或一個INTERVAL 型別,是要轉換的日期
fmt是一個字串,用於確定日期轉換的格式。 如果省略fmt,則date轉換VARCHAR2為如下值: DATE 值將轉換為預設日期格式的值。 TIMESTAMP和TIMESTAMP WITH LOCAL TIME ZONE值將轉換為預設時間戳格式的值。 TIMESTAMP WITH TIME ZONE 值將使用時區格式轉換為預設時間戳中的值。 'nlsparam'引數指定了月和日名稱的縮寫語言。這個引數可以有這樣的形式: 'NLS_DATE_LANGUAGE = 語言 ' 例如,Monday,Mon,January,Jan等。 如果省略'nlsparam',則此函式使用會話的預設日期語言。
字串' 17:45:29' 的日期時間格式模型是' HH24:MI:SS'。 字串' 11-Nov-1999' 的日期時間格式模型是' DD-Mon-YYYY'。
測試
注意 要想達到 ”字串' 11-Nov-1999' 的日期時間格式模型是' DD-Mon-YYYY' ”。需要指定 'nlsparam' 引數
select TO_CHAR(sysdate,'DD-Mon-YYYY','NLS_DATE_LANGUAGE=English') from dual
Uppercase Letters in Date Format Elements
Capitalization in a spelled-out word, abbreviation, or Roman numeral follows capitalization in the corresponding format element. For example, the date format model 'DAY' produces capitalized words like 'MONDAY'; 'Day' produces 'Monday'; and 'day' produces 'monday'.
拼寫單詞,縮寫或羅馬數字中的大寫在相應的格式元素中大寫。例如,日期格式模型'DAY'產生像'MONDAY'這樣的大寫單詞; 'Day'產生'Monday'; 而''day'產生'monday'。
select TO_CHAR(sysdate,'DAY-Mon-YYYY','NLS_DATE_LANGUAGE=English') from dual select TO_CHAR(sysdate,'Day-Mon-YYYY','NLS_DATE_LANGUAGE=English') from dual select TO_CHAR(sysdate,'day-Mon-YYYY','NLS_DATE_LANGUAGE=English') from dual
因為是英文文件,所以要指定'NLS_DATE_LANGUAGE=English'
You can include these characters in a date format model:
-
Punctuation such as hyphens, slashes, commas, periods, and colons
-
Character literals, enclosed in double quotation marks
These characters appear in the return value in the same location as they appear in the format model.
您可以在日期格式模型中包含這些字元:
-
標點符號,如連字元,斜槓,逗號,句點和冒號
-
字元文字,用雙引號括起來
這些字元出現在返回值中與格式模型中顯示的位置相同的位置。
Element | Specify in TO_* datetime functions? | Description |
---|---|---|
|
Yes |
Punctuation and quoted text is reproduced in the result. 格式符中可以包含左邊的元素 |
select TO_CHAR(sysdate,' "今天" day-Mon-YYYY') from dual
其次 格式字串中還可以包含 空格
|
Yes |
AD indicator with or without periods. AD 在漢語中顯示為公元 |
select TO_CHAR(sysdate,'AD day-Mon-YYYY') from dual
select TO_CHAR(sysdate,'A.D. day-Mon-YYYY') from dual 還是一樣
|
Yes |
Meridian indicator with or without periods. 可以顯示當前是下午還是上午 |
select TO_CHAR(sysdate,'AM day-Mon-YYYY') from dual
|
Yes |
BC indicator with or without periods. |
select TO_CHAR(sysdate,'BC day-Mon-YYYY') from dual
可見他和AM一樣,都表示公元
|
Yes |
Day of week (1-7). |
select TO_CHAR(sysdate,'D') from dual
在我們底盤今天是星期四
|
Yes |
Name of day, padded with blanks to display width of the widest name of day in the date language used for this element. |
select TO_CHAR(sysdate,'DAY') from dual
|
Yes |
Day of month (1-31). |
select TO_CHAR(sysdate,'DD') from dual
嗯,今天是 10月18號
|
Yes |
Day of year (1-366). 一年的第多少天 |
select TO_CHAR(sysdate,'DDD') from dual
下面這很好理解
|
Yes |
Hour of day (1-12). |
|
No |
Hour of day (1-12). |
|
Yes |
Hour of day (0-23). |
|
Yes |
Minute (0-59). 電腦上當前的分鐘 比 oracle查出來的分鐘 多了3分鐘 |
|
Yes |
Month (01-12; January = 01). |
|
Yes |
Abbreviated name of month. |
|
Yes |
Name of month, padded with blanks to display width of the widest name of month in the date language used for this element. |
|
Yes |
Second (0-59). |
|
Yes |
Year with comma in this position. |
|
Yes |
4-digit year; |
|
Yes |
Last 3, 2, or 1 digit(s) of year. |