一 日期函数
修改oracle默认的日期格式:
SQL> alter session set NLS_DATE_FORMAT='YYYY-MM-DD';
会话已更改。
SQL> SELECT SYSDATE FROM DUAL;
SYSDATE
----------
2020-04-13
a) sysdate:获取当前时间
SQL> select sysdate from dual;
SYSDATE
--------------
13-4月 -20
SQL> select sysdate,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
SYSDATE TO_CHAR(SYSDATE,'YY
-------------- -------------------
13-4月 -20 2020-04-13 09:06:20
SQL> select sysdate,to_char(sysdate,'yyyy') from dual;
SYSDATE TO_C
-------------- ----
13-4月 -20 2020
SQL> select sysdate,to_char(sysdate,'mm') from dual;
SYSDATE TO
-------------- --
13-4月 -20 04
SQL> select sysdate,to_char(sysdate,'dd') from dual;
SYSDATE TO
-------------- --
13-4月 -20 13
SQL> select sysdate,to_char(sysdate,'day') from dual;
SYSDATE TO_CHAR(S
-------------- ---------
13-4月 -20 星期一
SQL> select sysdate,to_char(sysdate,'hh24') from dual;
SYSDATE TO
-------------- --
13-4月 -20 09
b) last_day(日期):求出指定日期所属月的最后一天;
SQL> select last_day(sysdate) as 当月最后一天 from dual;
当月最后一天
--------------
30-4月 -20
c) next_day(日期,‘星期几’);~求指定日期下个的星期X
SQL> select next_day(sysdate,'星期三') from dual;
NEXT_DAY(SYSDA
--------------
15-4月 -20
SQL> select next_day(sysdate,'星期一') from dual;
NEXT_DAY(SYSDA
--------------
20-4月 -20
SQL> select next_day(sysdate,'星期二') from dual;
NEXT_DAY(SYSDA
--------------
14-4月 -20
d) add_month(日期,X)::
含义:日期的月份+X
SQL> select add_months(m.hiredate,-1) from emp m;
ADD_MONTHS(M.H
--------------
20-2月 -85
17-11月-80
20-1月 -81
22-1月 -81
02-3月 -81
28-8月 -81
01-4月 -81
09-5月 -81
19-3月 -87
17-10月-81
08-8月 -81
23-4月 -87
03-11月-81
03-11月-81
23-12月-81
已选择15行。
--查询雇用日期上一年的入职人员信息;
```sql
SQL> select add_months(hiredate,-12) from emp;
ADD_MONTHS(HIR
--------------
20-3月 -84
17-12月-79
20-2月 -80
22-2月 -80
02-4月 -80
28-9月 -80
01-5月 -80
09-6月 -80
19-4月 -86
17-11月-80
08-9月 -80
23-5月 -86
03-12月-80
03-12月-80
23-1月 -81
已选择15行。
e)systimestamp
SQL> select systimestamp from dual;
SYSTIMESTAMP
---------------------------------------------------------------------------
13-4月 -20 11.17.03.478000 上午 +08:00
二 转换函数
a) to_char()
用法:将对象转化为字符串
SQL> select to_char(sysdate,'yyyy--mm--dd hh24:mm:ss') from dual;
TO_CHAR(SYSDATE,'YYYY
---------------------
2020--04--13 15:04:54
b) to_date
SQL> select to_date('2020-04-13 13:14:20','yyyy-mm-dd HH24:mi:ss') from dual;
TO_DATE('2020-
--------------
13-4月 -20
```sql
--求具体的时间是周几;
SQL> select to_char(to_date('1987-05-17','yyyy-mm-dd'),'day') from dual;
TO_CHA
------
星期日
--求两个具体日期的时间间隔;
SQL> select floor(sysdate - to_date('20020405','yyyyddmm')) from dual;
FLOOR(SYSDATE-TO_DATE('20020405','YYYYDDMM'))
---------------------------------------------
6554
c) to_number
字符换数字;
SQL> select to_number('123,456.78','999999d999') from dual;
TO_NUMBER('123,456.78','999999D999')
------------------------------------
123456.78