美文网首页
to_date()与to_char()比较

to_date()与to_char()比较

作者: baobaodz | 来源:发表于2018-03-21 21:42 被阅读648次

    先看一下to_date()
    日期到字符

    select sysdate,to_date('2018-3-20','yyyy-mm-dd') from dual;
    select sysdate,to_date('2018-3-20','yyyy.mm.dd') from dual;
    select sysdate,to_date('2018-3-20','yyyy/mm/dd') from dual;
    select sysdate,to_date('2018-3-20','yyyy-mm-dd hh24:mi:ss') from dual;
    select sysdate,to_date('2018.3.20','yyyy-mm-dd') from dual;
    select sysdate,to_date('2018/3/20','yyyy-mm-dd') from dual;
    select sysdate,to_date('20180320','yyyy-mm-dd') from dual;
    

    这几个语句输出结果都是


    to_date

    观察发现,无论是日期是什么格式,还是’yyyy-dd-mm’是什么格式,其结果都和系统日期格式保持一致。得到的时间为2018/3/21 00:00:00

    验证一下,看看时分秒格式,结果还是和系统时间格式一致。

    select sysdate,
    to_date(‘2018-3-21 10 17 14’,’yyyy-mm-dd hh24:mi:ss’) from dual;
    

    输出结果:2018/3/21/周三22:17:14

    2.to_char()

    将时间日期按照指定的格式输出,得到的是字符串,而非date类型。

    select sysdate,to_char(sysdate,'yyyy-mm-dd')from dual;  
    select sysdate,to_char(sysdate,'yyyy/mm/dd')from dual;  
    select sysdate,to_char(sysdate,'yyyymmdd')from dual;  
    select sysdate,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')from dual;  
    

    输出结果

    2018/3/21/周三 10:19:25  2018-03-21
    2018/3/21/周三 10:19:25 2018/03/21
    2018/3/21/周三 10:19:25 20180321
    2018/3/21/周三 10:19:25 2018-03-21 10:22:57 `
    
    用to_char()可以得到日期中的年、月、日、时、分
    select sysdate,to_char(sysdate,'yyyy')from dual;  
    select sysdate,to_char(sysdate,'mm')from dual;  
    select sysdate,to_char(sysdate,'hh24')from dual;  
    select sysdate,to_char(sysdate,'mi')from dual;  
    

    输出结果是

    2018/3/21/周三 10:25:57 2018
    2018/3/21/周三 10:25:57 03
    2018/3/21/周三 10:25:57 10
    2018/3/21/周三 10:25:57 25
    

    另外to_char可以截取年份,计算年龄等
    查询Student表中每个学生的姓名和年龄。

    SELECT SNAME,
    EXTRACT (YEAR FROM SYSDATE)- EXTRACT (YEAR FROM S.SBIRTHDAY) AGE 
    FROM STUDENT S;--取出当前时间的年份-出生日期的年份即年龄AGE
    SELECT SNAME,
    TO_CHAR(SYSDATE,'YYYY') - TO_CHAR(SBIRTHDAY,'YYYY') AGE 
    FROM STUDENT;
    
    结果

    查询当前日期和给定日期是星期几

    select to_char(sysdate,'day') from dual;--结果为星期三
    select to_char(to_date('2018-3-20','yyyy/mm/dd'),'day') 
    from dual;--结果星期二
    

    相关文章

      网友评论

          本文标题:to_date()与to_char()比较

          本文链接:https://www.haomeiwen.com/subject/qbmnqftx.html