ORACLE日期函数
以时间2007-11-02 13:45:25为例
日期字段 |
格式 |
英文 |
解释 |
显示值 |
Year
|
yy |
two digits |
两位年 |
07 |
yyy |
three digits |
三位年 |
007 |
|
yyyy |
four digits |
四位年 |
2007 |
|
Month
|
mm |
number |
两位月 |
11 |
mon |
abbreviated |
字符集表示 |
11月(nov) |
|
month |
spelled out |
字符集表示 |
11月(november) |
|
Day
|
dd |
number |
当月第几天 |
02 |
ddd |
number |
当年第几天 |
02 |
|
dy |
abbreviated |
当周第几天简写 |
星期五(fri) |
|
day |
spelled out |
当周第几天全写 |
星期五(friday) |
|
Hour
|
hh |
two digits |
12小时制 |
01 |
hh24 |
two digits |
24小时制 |
13 |
|
Minute |
mi |
two digits |
60进制 |
45 |
Second |
ss |
two digits |
60进制 |
25 |
Others
|
Q |
digit |
季度 |
4 |
WW |
digit |
当年第几周 |
44 |
|
W |
digit |
当月第几周 |
1 |
select to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss') from dual;
年:
YY :两位年 16
YYY :三位年 016
YYYY :四位年 2016
季度
Q :返回季度
月份
MM :
MON :
MONTH:
周
WW :
W :
天
DD :
DDD :
DY :
DAY :
小时
HH:
HH24 :
分
MI :
秒
SS:
1.获取当前系统日期
--返回当前系统日期 SELECT SYSDATE FROM DUAL;
2.返回系统日期的年份
- 两位年
SELECT TO_CHAR(SYSDATE,'YY') FROM DUAL;
- 三位年
select TO_CHAR(SYSDATE,'YYY')FROM DUAL;
- 四位年
SELECT TO_CHAR(SYSDATE,'YYYY') FROM DUAL;
3.返回季度
SELECT TO_CHAR(SYSDATE,'Q') FROM DUAL;
4.返回日期的月份
月份数字 :
SELECT TO_CHAR(SYSDATE,'MM') FROM DUAL;
月份英文缩写:
SELECT TO_CHAR(SYSDATE,'MON') FROM DUAL;
月份全英文:
SELECT TO_CHAR(SYSDATE,'MONTH') FROM DUAL;
5.返回周
当年第几周
SELECT TO_CHAR(SYSDATE,'WW') FROM DUAL;
当月第几周
SELECT TO_CHAR(SYSDATE,'W') FROM DUAL;
6.返回日期的天数
当月第几天
SELECT TO_CHAR(SYSDATE,'DD') FROM DUAL;
当年第几天
SELECT TO_CHAR(SYSDATE,'DDD') FROM DUAL;
本周星期几缩写
SELECT TO_CHAR(SYSDATE,'DY') FROM DUAL;
本周星期几全称
SELECT TO_CHAR(SYSDATE,'DAY') FROM DUAL;
7.返回小时
十二: SELECT TO_CHAR(SYSDATE,'HH') FROM DUAL; 二十四:SELECT TO_CHAR(SYSDATE,'HH24') FROM DUAL;
返回时间的分
SELECT TO_CHAR(SYSDATE,'MI') FROM DUAL;
8.返回秒
SELECT TO_CHAR(SYSDATE,'SS') FROM DUAL;
/********************************华丽的分割线************************************/
1.获取当前月份的第一天
SELECT TRUNC(SYSDATE,'MONTH') FROM DUAL;
2.获取当前月份的最后一天
SELECT TRUNC(LAST_DAY(SYSDATE)) FROM DUAL;
3.获取当前年份的第一天
SELECT TRUNC(SYSDATE,'YEAR') FROM DUAL;
4.获取当前年份的最后一天
SELECT TRUNC(LAST_DAY(SYSDATE)) FROM DUAL;
5.获取当前月份的天数
SELECT CAST(TO_CHAR(LAST_DAY(SYSDATE),'DD') AS INT) FROM DUAL;
6.获取当前月份剩下的天数
SELECT SYSDATE , LAST_DAY(SYSDATE) ,LAST_DAY(SYSDATE)-SYSDATE FROM DUAL;
7.获取两个日期之间的天数
SELECT ROUND(SYSDATE - TRUNC(SYSDATE,'YEAR')) FROM DUAL;
8.获取直到目前为止今天过去的秒数
SELECT (SYSDATE - TRUNC (SYSDATE)) * 24 * 60 * 60 num_of_sec_since_morning FROM DUAL;
9.获取今天剩下的秒数
SELECT (TRUNC (SYSDATE+1) - SYSDATE) * 24 * 60 * 60 num_of_sec_left FROM DUAL;
10.获取两个日期的月份差
select months_between(trunc(to_date('2010-03-02','yyyy-mm-dd'),'mm') , trunc(to_date('2010-02-10','yyyy-mm-dd'),'mm')) from dual;
11.获取两个日期的天数差
select to_date('2010-03-02','yyyy-mm-dd')-to_date('2010-02-10','yyyy-mm-dd') from dual;
12.获取两个日期的年份差
select months_between(to_date('2010-03-01','yyyy-mm-dd') , to_date('2007-03-01','yyyy-mm-dd'))/12 from dual;
/********************************************/
1.生成随机数
SELECT ROUND (DBMS_RANDOM.VALUE () * 100) + 1 AS random_num FROM DUAL;