zoukankan      html  css  js  c++  java
  • SQL之to_date()以及关于日期处理的详解

    日期例子:
    SELECT TO_DATE('2006-05-01 19:25:34', 'YYYY-MM-DD HH24:MI:SS') FROM DUAL
    SELECT TO_DATE('2006-05-01 19:25', 'YYYY-MM-DD HH24:MI') FROM DUAL
    SELECT TO_DATE('2006-05-01 19', 'YYYY-MM-DD HH24') FROM DUAL
    SELECT TO_DATE('2006-05-01', 'YYYY-MM-DD') FROM DUAL
    SELECT TO_DATE('2006-05', 'YYYY-MM') FROM DUAL
    SELECT TO_DATE('2006', 'YYYY') FROM DUAL
    
     日期格式 
    格式控制 描述 
    YYYY、YYY、YY 分别代表4位、3位、2位的数字年 
    YEAR 年的拼写 
    MM 数字月 
    MONTH 月的全拼 
    MON 月的缩写 
    DD 数字日 
    DAY 星期的全拼 
    DY 星期的缩写 
    AM 表示上午或者下午 
    HH24、HH12 12小时制或24小时制 
    MI 分钟 
    SS 秒钟 
    SP 数字的拼写 
    TH 数字的序数词
    
    日期说明: 
    当省略HH、MI和SS对应的输入参数时,Oracle使用0作为DEFAULT值。如果输入的日期数据忽略时间部分,Oracle会将时、分、秒部分都置为0,也就是说会取整到日。
    同样,忽略了DD参数,Oracle会采用1作为日的默认值,也就是说会取整到月。
    但是,不要被这种“惯性”所迷惑,如果忽略MM参数,Oracle并不会取整到年,取整到当前月。
    
    注意: 
    1.在使用Oracle的to_date函数来做日期转换时,可能会直觉地采用“yyyy-MM-dd HH:mm:ss”的格式作为格式进行转换,但是在Oracle中会引起错误:“ORA 01810 格式代码出现两次”。如:
    select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mm:ss') from dual;原因是SQL中不区分大小写,MM和mm被认为是相同的格式代码,所以Oracle的SQL采用了mi代替分钟。select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual;
    
    2.另要以24小时的形式显示出来要用HH24
    select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;//mi是分钟
    select to_char(sysdate,'yyyy-MM-dd HH24:mm:ss') from dual;//mm会显示月份
    
    例子:
    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual;   //日期转化为字符串   
    select to_char(sysdate,'yyyy') as nowYear   from dual;   //获取时间的年   
    select to_char(sysdate,'mm')    as nowMonth from dual;   //获取时间的月   
    select to_char(sysdate,'dd')    as nowDay    from dual;   //获取时间的日   
    select to_char(sysdate,'hh24') as nowHour   from dual;   //获取时间的时   
    select to_char(sysdate,'mi')    as nowMinute from dual;   //获取时间的分   
    select to_char(sysdate,'ss')    as nowSecond from dual;   //获取时间的秒 
    
    2、求某天是星期几
     select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual;      
       星期一      
       select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;      
       monday      
       设置日期语言      
       ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';      
       也可以这样      
       TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American')     
    
    3、两个日期间的天数
    select floor(sysdate - to_date('20020405','yyyymmdd')) from dual; 
    
  • 相关阅读:
    libmv
    visualSFM
    opencv学习笔记——时间计算函数getTickCount()和getTickFrequency()
    opencv学习笔记——cv::mean()函数详解
    linux使用ip能ping通,但使用域名却不能访问的解决方法
    yum 安装出错--"Couldn't resolve host 'mirrors.aliyun.com'"
    vmware复制虚拟机出现Error:No suitable device found:no device found for connection 'System eth0'
    VMWare虚拟机 网络连接模式
    js监听input输入框值的实时变化实例
    本地连接linux虚拟机的方法
  • 原文地址:https://www.cnblogs.com/macT/p/10214944.html
Copyright © 2011-2022 走看看