關於to char和to date兩個函式

2021-09-25 21:58:20 字數 2170 閱讀 1324

to_char函式的功能是將date、datetime、numeric的值轉化成字串表示式。其實我理解to_char的核心就是把你輸入的乙個日期格式的字串,通過ifx自己定義的表示式規則匹配出來,然後做格式轉化,最後拼出你想要的字串。這裡的格式轉化規則需要好好學習和總結,需要深入理解。在to_date的時候其實是反過來處理的,把你輸入的字串,根據你的ifx提供的處理規則,整理出你可以使用的日期格式,輸出格式需要參考datetime環境變數的格式。

to_char函式需要兩個引數,第乙個引數表示需要轉化的源;第二個引數表示需要轉化成字串的輸出格式。如果第乙個引數是null,則函式返回值為null。

begin_date被定義為date型別,

select to_char(begin_date, 』%a %b %d, %y %r』) from tab1;

返回值的輸出格式與資料庫的字符集有關係:

en_us.819為:wednesday july 25, 201318:45

zh_cn.gb18030-2000為:星期日  4月 21,20190:0

begin_date被定義為datetime year to second型別,

select to_char(begin_date, 』%a %b %d, %y %r』) from tab1;  輸出為:星期日  4月 21,2019 10:09

select to_char(begin_date, 』%a %b %d, %y』) from tab1;        輸出為:星期日  4月 21,2019

%a   full weekday name, as defined in the locale

%a    星期的短格式,如sun

%b   full month name, as defined in the locale

%b   月份的短格式,如apr

%d   day of the month as an integer (01 through 31). a single-digit value is preceded by a zero (0).

%y   year as a 4-digit decimal number

%r   time in 24-hour notation (equivalent to %h:%m format, as defined below).

%d   %m/%d/%y 格式

%e    1-31日,前面不補0的格式

%h     只顯示月份

%h    兩個數字顯示00-23點

%i     兩個數字顯示00-11

%m   表示00-59分

%t   表示%h:%m:%s 

%w   用0-6表示星期

%y   用兩位數字表示年

%fn  表示fraction的0-5位

select to_char(current year to fraction(5),"%y-%m-%d %h:%m:%s.%f") from sysmaster:sysdual;

如果你省略了第二個引數,沒有設定字串的輸出格式,to_char會使用環境變數dbtime或dbdate設定的格式,如果不在預設區域會使用環境變數gl_datetime、gl_date指定的格式。

select gbase_to_char(id,"-$******.*****") from t   輸出格式為: $123456.78920   

我理解數字轉化成字元的使用概率並不高,通常是直接用資料庫的隱式轉化就解決了:

create table t (id decimal(10,4));

create table t1 (id varchar(255))

insert into t1 select id from t;     隱式轉化

to_date函式的目的是轉化乙個字串為乙個datetime型別的值。這個過程可以理解成to_char函式的逆過程。

update tab1  set begin_date = to_date(』wednesday july 25, 2007 18:45』,』%a %b %d, %y %r』);

select gbase_to_date(substr("mon aug 05 11:25:35 cst 2019",0,19)||substr("mon aug 05 11:25:35 cst 2019",24,5),'%a %b %d %t %y') from t1

to char 和to date的說明

to char date 型別轉換為 varchar2 to date varchar2 型別轉換為 date 單純 to char sysdate,yyyy mm dd 更快 還是 to date 2010 11 22 yyyy mm dd 更快 其實沒有太大的意義。主要是你那個表,如果資料量很大...

日期轉換to char和to date的區別

1 1.to char是把資料庫中的日期型別轉換成我們需要的字串 2.to date 是把我們需要的字串轉換成資料庫中的日期型別 2 這個是inserttime從前台傳過來的 select nvl rdsh.resolve success rate,0 as resolvesuccessrate n...

關於to number和to char函式

to number是將字串按照指定的格式專為數字,相反,to char是將數字轉換為指定格式的字串。select to char 1 7,999,990.99 from dual 正常 select to number 19.43453 99999999.99 from dual 報錯,無效字元 s...