--常见日期格式
以时间 2007-11-02 13:45:25 为例
YEAR:
YY 两位年 显示值:07
YYY 三位年 显示值:007
YYYY 四位年 显示值:2007
MONTH:
MM 两位月 显示值:11
MON 字符集表示 显示值:11月,若是英文版,显示NOV
MONTH 字符集表示 显示值:11月,若是英文版,显示NOVEMBER
DAY:
DD 当月第几天 显示值:02
DDD 当年第几天 显示值:02
DY 当周第几天简写 显示值:星期五,若是英文版,显示FRI
DAY 当周第几天全写 显示值:星期五,若是英文版,显示FRIDAY
HOUR:
HH 12小时进制 显示值:01
HH24 24小时进制 显示值:13
MINUTE:
MI 60进制 显示值:45
SECOND:
SS 60进制 显示值:25
其它:
Q 季度 显示值:4
WW 当年第几周 显示值:44
W 当月第几周 显示值:1
24小时格式下时间范围为: 0:00:00 - 23:59:59
12小时格式下时间范围为: 1:00:00 - 12:59:59
--日期、字符、数字类型互相转换,NUMBER和DATE要以TO_CHAR为中转
SELECT TO_DATE('2007-11-02 13:45:25','YYYY-MM-DD HH24:MI:SS') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'MM') FROM DUAL;
--ROUND函数和TRUNC函数,可以操作日期也可以操作数值
SELECT ROUND(SYSDATE,'MON') FROM DUAL; --会根据指定格式四舍五入
SELECT SYSDATE,ROUND(SYSDATE,'DD'),ROUND(SYSDATE,'DDD'),ROUND(SYSDATE,'D'),ROUND(SYSDATE,'DY'),ROUND(SYSDATE,'DAY') FROM DUAL;
--这里要尤其注意,天的格式的选择,会产生不同的结果
SELECT SYSDATE,ROUND(SYSDATE,'MM'),ROUND(SYSDATE,'MON'),ROUND(SYSDATE,'MONTH') FROM DUAL;
SELECT SYSDATE,ROUND(SYSDATE,'Y'),ROUND(SYSDATE,'YY'),ROUND(SYSDATE,'YYY'),ROUND(SYSDATE,'YYYY'),ROUND(SYSDATE,'YEAR') FROM DUAL;
SELECT TRUNC(SYSDATE,'MON') FROM DUAL; --返回截断时间,即不会四舍五入,例:2018-06-22 --> 2018-06-01
SELECT SYSDATE,TRUNC(SYSDATE,'DD'),TRUNC(SYSDATE,'DDD'),TRUNC(SYSDATE,'D'),TRUNC(SYSDATE,'DY'),TRUNC(SYSDATE,'DAY') FROM DUAL;
--这里要尤其注意,天的格式的选择,会产生不同的结果
SELECT SYSDATE,TRUNC(SYSDATE,'MM'),TRUNC(SYSDATE,'MON'),TRUNC(SYSDATE,'MONTH') FROM DUAL;
SELECT SYSDATE,TRUNC(SYSDATE,'Y'),TRUNC(SYSDATE,'YY'),TRUNC(SYSDATE,'YYY'),TRUNC(SYSDATE,'YYYY'),TRUNC(SYSDATE,'YEAR') FROM DUAL;
--其他函数
SELECT ADD_MONTHS(SYSDATE,2) FROM DUAL; --日期推后2个月
SELECT LAST_DAY(SYSDATE) FROM DUAL; --日期最后一天
SELECT NEXT_DAY(TO_DATE('2018-07-04','YYYY-MM-DD'), 1) FROM DUAL; --日期后的周几,以1为星期天开始
SELECT MONTHS_BETWEEN(SYSDATE, TO_DATE('2018-07-15','YYYY-MM-DD')) FROM DUAL; --两个日期间有几个月