Oracle 日期函式和轉換函式

2022-09-14 04:33:10 字數 4091 閱讀 3233

一、日期函式

日期函式用於處理date型別的資料,兩個日期相減返回日期之間相差的天數。日期不允許做加法運算,無意義。

常見代表符號:yyyy 年,mm 月,dd 日,hh 小時,mi 分鐘,ss 秒,day 星期

預設情況下日期格式是dd-mon-yy即12-3月-19

(1)sysdate: 該函式返回系統時間

(2)months_between(m,n)日期m和日期n相差多少月數

(3)add_months(d,n)在日期d上增加n個月數

(4)next_day(d, '星期*') 指定日期d下乙個星期*對應的日期

(5)last_day(d):返回指定日期d所在月份的最後一天

(6)extract(month from d)從日期d上提取月份數

(7)round(d,time)日期的四捨五入

(8)trunc(d,time)日期的截斷

以下是日期函式的一些例子及效果圖:

各種情況例子:

months_between select months_between('01-9月-95','11-1月-94') from dual;  --19.6774193548387

add_months select add_months('11-2月-18',6) from dual; --2018/8/11

next_day select next_day('11-2月-18','星期六') from dual; --2018/2/17

last_day select last_day('11-2月-18') from dual; --2018/2/28

round 四捨五入月份 25-7月-18 select round(to_date('25-7月-2018'), 'month') from dual; --2018/8/1

round 四捨五入年份 25-7月-18 select round(to_date('25-7月-2018』), 'year') from dual; --2019/1/1

trunc 截斷月份 25-7月-18 select trunc(to_date('25-7月-2018'), 'month') from dual; --2018/7/1

trunc 截斷年份 25-7月-18 select trunc(to_date('25-7月-2018'), 'year') from dual; --2018/1/1

eg:查詢已經入職8個月多的員工

eg:顯示滿10年服務年限的員工的姓名和受僱日期。

eg:對於每個員工,顯示其加入公司的天數。

或者sql>select trunc(sysdate-hiredate),ename from emp;

eg:找出各月倒數第3天受僱的所有員工。

二、轉換函式

轉換函式用於將資料型別從一種轉為另外一種。在某些情況下,oracle server允許值的資料型別和實際的不一樣,這時oracle server會隱含的轉化資料型別

我們要說的是儘管oracle可以進行隱含的資料型別的轉換,但是它並不適應所有的情況,為了提高程式的可靠性,我們應該使用轉換函式進行轉換。

(1)to_char函式

格式: to_char(date,『format』)

1、必須包含在單引號中而且大小寫敏感。

2、可以包含任意的有效的日期格式。

3、日期之間用逗號隔開。

eg:日期是否可以顯示 時/分/秒

eg:薪水是否可以顯示指定的貨幣符號

yy:兩位數字的年份2004–>04

yyyy:四位數字的年份 2023年

mm:兩位數字的月份 8月–>08

dd:兩位數字的天 30號–>30

hh24: 8點–>20

hh12:8點–>08

mi、ss–>顯示分鐘/秒

9:顯示數字,並忽略前面0

0:顯示數字,如位數不足,則用0補齊

.:(小數點)在指定位置顯示小數點

,:(千位符)在指定位置顯示逗號

$:(美元符)在數字前加美元

l:(本地貨幣符)在數字前面加本地貨幣符號

c:(國際貨幣符)在數字前面加國際貨幣符號

eg:顯示薪水的時候,把本地貨幣單位加在前面

eg:顯示2023年入職的所有員工

eg:顯示所有12月份入職的員工

sql> select * from emp where to_char(hiredate, 'mm')=12;

這裡的12和1980是數字,可以加 』 』 也可以不加,因為oracle會自動轉換,但是最好加。

eg:顯示姓名、hiredate和雇員開始工作日是星期幾

sql> select ename,hiredate,to_char(hiredate,'day') from emp;

(2)to_date函式

格式:to_date(string,『format』)

函式to_date用於將字串轉換成date型別的資料。

eg:把字串2015-03-18 13:13:13轉換成日期格式,

sql> select to_date('2015-03-18 13:13:13','yyyy-mm-dd hh24:mi:ss') from dual;

(3)to_number函式

格式:to_number(char,『format』)

使用to_number函式將字元轉換成日期。

sql> select to_number('¥1,234,567,890.00','l999,999,999,999.99') from dual;

oracle的日期轉換函式

oracle的日期轉換函式是to date var1,format 第乙個引數是字元型日期,後面是其當前格式,此函式用於將指定格式的日期字串轉換為日期。假如var1是 20101130131230 由年月日時分秒組成的日期字串,則對應的format就應該是 yyyymmddhh24miss 如果va...

Oracle日期字元轉換函式

1.oracle日期轉字元 2.oracle字元轉日期 只能字串轉日期 為指定元素而截去的日期值。格式 trunc date fmt 使用 select trunc sysdate from dual 2011 3 18 今天的日期為2011 3 18 select trunc sysdate,mm...

MySQL和Oracle常用日期轉換函式

mysql date time to str 日期 時間轉換為字串 函式 date format date,format time format time,format 日期轉字串 select date format jzksrq,y c d h i s 日期 from healthtest.mb...