看完这章你会学习到以下

  • 三种函数,To_char,Trunc, 日期函数等
  • 之间的差异和注意事项

1.Trunc 函数,按照第二参数相应截取日期

SELECT TRUNC(ADD_MONTHS(SYSDATE,3),'Q')-1 AS 本季度最后一天 FROM DUAL;  -- 本季度的最后一天SELECT TRUNC(SYSDATE,'q') AS 本季度第一天 FROM DUAL;                  -- 本季度的第一天SELECT TRUNC(SYSDATE,'Y') AS 本年的第一天 FROM DUAL;                    --- 本年的第一天SELECT TRUNC(ADD_MONTHS(SYSDATE,12),'Y')-1 AS 半年最后一天 FROM DUAL;   --- 本年最后一天SELECT TRUNC(SYSDATE,'MM') FROM DUAL;      --- 本月的第一天SELECT TRUNC(ADD_MONTHS(SYSDATE,1),'MM')-1 FROM DUAL;  --- 本月的最后一天      SELECT TRUNC(SYSDATE,'D') FROM DUAL;       --- 西方以周日为起点 周日SELECT TRUNC(SYSDATE,'D')+1 FROM DUAL;     --- 中国以周一为起点 周一SELECT TRUNC(SYSDATE,'D')+7 FROM DUAL;     --- 本周的周末

注意事项
日期函数截取之后,还是日期函数,不会更改格式
下面结果中的下三角箭头就代表可以返回日期格式。


2. To_Char 函数,将所有格式都转换为字符串格式。

SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH:MI:SS') FROM DUAL;SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') FROM DUAL;   --- 如果不加24,就默认是12小时制度SELECT TO_CHAR(SYSDATE,'YYYYMM') FROM DUAL;SELECT TO_CHAR(SYSDATE,'DDD') FROM DUAL;     --- 本年至今天数SELECT TO_CHAR(SYSDATE,'DD') FROM DUAL;      --- 本月至今天数SELECT TO_CHAR(SYSDATE,'D') FROM DUAL;       --- 本周至今天数 (西方按照星期日作为起点)SELECT TO_CHAR(SYSDATE,'Q') FROM DUAL ;   ----- 当前季度SELECT TO_CHAR(SYSDATE,'MM') FROM DUAL ;  ----- 当前月份SELECT TO_CHAR(SYSDATE,'WW') 当前周数 FROM DUAL; ---- 当前周数


3.日期函数
ADD_MONTHS,MONTHS_BETWEEN;
NEXT_DAY,LAST_DAY

SELECT LAST_DAY(ADD_MONTHS(SYSDATE,-1)) FROM DUAL  ---- 上个月最后一日SELECT MONTHS_BETWEEN(SYSDATE,DATE'2019-02-13') FROM DUAL   ---- 两个时间段间的月差距SELECT NEXT_DAY(SYSDATE,1) FROM DUAL;      ---- 明天SELECT NEXT_DAY(SYSDATE,2) FROM DUAL;      ---- 后天SELECT SYSDATE - 1 FROM DUAL;    --- 昨天SELECT SYSDATE - 2 FROM DUAL;   --- 前天SELECT NEXT_DAY(SYSDATE, '星期一') FROM DUAL;   -- 下一个星期一日期SELECT NEXT_DAY(SYSDATE, '星期二') FROM DUAL;   -- 下一个星期二日期SELECT NEXT_DAY(SYSDATE, '星期三') FROM DUAL;   -- 下一个星期三日期SELECT NEXT_DAY(SYSDATE, '星期四') FROM DUAL;   -- 下一个星期四日期SELECT NEXT_DAY(SYSDATE, '星期五') FROM DUAL;   -- 下一个星期五日期SELECT NEXT_DAY(SYSDATE, '星期六') FROM DUAL;   -- 下一个星期六日期SELECT NEXT_DAY(SYSDATE, '星期日') FROM DUAL;   -- 下一个星期日日期

注意事项:
在用时间函数,Next_day的时候,_当当前是星期X,
则Next_DAY会返回本周星期X+1。

--- 如果SYSDATE的日期是星期X,则NEXT_DAY的星期X+1是返回本周的日期SELECT SYSDATE AS 当前日期,NEXT_DAY(SYSDATE,'星期日') AS 下一个周日日期 FROM DUAL;