1. 程式人生 > >Oracle時間函式 to_char()及常用時間格式

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
-
/
,
.
;
:
"text"

Yes

Punctuation and quoted text is reproduced in the result.

格式符中可以包含左邊的元素 

 select TO_CHAR(sysdate,' "今天" day-Mon-YYYY') from dual

其次 格式字串中還可以包含 空格 

AD
A.D.

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   還是一樣

AM
A.M.

Yes

Meridian indicator with or without periods.

可以顯示當前是下午還是上午 

 select TO_CHAR(sysdate,'AM day-Mon-YYYY') from dual

BC
B.C.

Yes

BC indicator with or without periods.

 select TO_CHAR(sysdate,'BC day-Mon-YYYY') from dual

  可見他和AM一樣,都表示公元

D

Yes

Day of week (1-7).

select TO_CHAR(sysdate,'D') from dual 

 在我們底盤今天是星期四

DAY

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

DD

Yes

Day of month (1-31).

 select TO_CHAR(sysdate,'DD') from dual

 嗯,今天是 10月18號

DDD

Yes

Day of year (1-366).

一年的第多少天

select TO_CHAR(sysdate,'DDD') from dual 

 下面這很好理解

HH

Yes

Hour of day (1-12).

HH12

No

Hour of day (1-12).

HH24

Yes

Hour of day (0-23).

MI

Yes

Minute (0-59). 電腦上當前的分鐘 比 oracle查出來的分鐘 多了3分鐘

MM

Yes

Month (01-12; January = 01).

MON

Yes

Abbreviated name of month.

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.

SS

Yes

Second (0-59).

Y,YYY

Yes

Year with comma in this position.

YYYY
SYYYY

Yes

4-digit year; S prefixes BC dates with a minus sign.

YYY
YY
Y

Yes

Last 3, 2, or 1 digit(s) of year.