菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
408
0

日期函数

原创
05/13 14:22
阅读数 98846
--常见日期格式
以时间 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;     --两个日期间有几个月

 

发表评论

0/200
408 点赞
0 评论
收藏