美文网首页
Oracle Mysql 日期格式化

Oracle Mysql 日期格式化

作者: Skye_kh | 来源:发表于2017-09-16 10:02 被阅读192次

    Mysql

    mysql查询记录如果有时间戳字段时,查看结果不方便,不能即时看到时间戳代表的含义,现提供mysql格式换时间函数,可以方便的看到格式化后的时间。

    1. DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。

    DATE_FORMAT(date,format)

    %a  缩写星期名
    %b  缩写月名
    %c  月,数值
    %D  带有英文前缀的月中的天
    %d  月的天,数值(00-31)
    %e  月的天,数值(0-31)
    %f  微秒
    %H  小时 (00-23)
    %h  小时 (01-12)
    %I  小时 (01-12)
    %i  分钟,数值(00-59)
    %j  年的天 (001-366)
    %k  小时 (0-23)
    %l  小时 (1-12)
    %M  月名
    %m  月,数值(00-12)
    %p  AM 或 PM
    %r  时间,12-小时(hh:mm:ss AM 或 PM)
    %S  秒(00-59)
    %s  秒(00-59)
    %T  时间, 24-小时 (hh:mm:ss)
    %U  周 (00-53) 星期日是一周的第一天
    %u  周 (00-53) 星期一是一周的第一天
    %V  周 (01-53) 星期日是一周的第一天,与 %X 使用
    %v  周 (01-53) 星期一是一周的第一天,与 %x 使用
    %W  星期名
    %w  周的天 (0=星期日, 6=星期六)
    %X  年,其中的星期日是周的第一天,4 位,与 %V 使用
    %x  年,其中的星期一是周的第一天,4 位,与 %v 使用
    %Y  年,4 位
    %y  年,2 位
    

    例子

    DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p')  
    DATE_FORMAT(NOW(),'%m-%d-%Y')  
    DATE_FORMAT(NOW(),'%d %b %y')  
    DATE_FORMAT(NOW(),'%d %b %Y %T:%f') 
    

    输出结果

    Dec 29 2008 11:45 PM  
    12-29-2008  
    29 Dec 08  
    29 Dec 2008 16:25:46 
    

    2. MySQL 格式化函数 FROM_UNIXTIME()

    SELECT FROM_UNIXTIME(date, '%Y-%c-%d %h:%i:%s' ) as post_date ,   
    date_format(NOW(), '%Y-%c-%d %h:%i:%s' ) as post_date_gmt   
    FROM `article`  where outkey = 'Y' 
    

    FROM_UNIXTIME( unix_timestamp )

    参数:一般为10位的时间戳,如:1417363200

    返回值:有两种,可能是类似 'YYYY-MM-DD HH:MM:SS' 这样的字符串,也有可能是类似于 YYYYMMDDHHMMSS.uuuuuu 这样的数字,具体返回什么取决于该函数被调用的形式。

    mysql> select FROM_UNIXTIME(1344887103);  
    +---------------------------+  
    | FROM_UNIXTIME(1344887103) |  
    +---------------------------+  
    | 2012-08-14 03:45:03       |  
    +---------------------------+  
    row in set (0.00 sec)
    

    FROM_UNIXTIME( unix_timestamp ,format )

    参数 unix_timestamp :与方法 FROM_UNIXTIME( unix_timestamp ) 中的参数含义一样;
    参数 format : 转换之后的时间字符串显示的格式;

    返回值:按照指定的时间格式显示的字符串;

    mysql> select FROM_UNIXTIME(1344887103,'%Y-%M-%D %h:%i:%s');  
    +-----------------------------------------------+  
    | FROM_UNIXTIME(1344887103,'%Y-%M-%D %h:%i:%s') |  
    +-----------------------------------------------+  
    | 2012-August-14th 03:45:03                     |  
    +-----------------------------------------------+  
    row in set (0.00 sec)  
    mysql> select FROM_UNIXTIME(1344887103,'%Y-%m-%D %h:%i:%s');  
    +-----------------------------------------------+  
    | FROM_UNIXTIME(1344887103,'%Y-%m-%D %h:%i:%s') |  
    +-----------------------------------------------+  
    | 2012-08-14th 03:45:03                         |  
    +-----------------------------------------------+  
    row in set (0.00 sec)
    

    Oracle

    格式化函数

    TO_CHAR(datetime, 'format')  
    TO_DATE(character, 'format')  
    TO_TIMESTAMP(character, 'format')  
    TO_TIMESTAMP_TZ(character, 'format')  
    

    不同格式化产生不同结果

    SELECT TO_CHAR(current_timestamp, 'format') FROM DUAL;

    Format Result
    YYYY-MM-DD 2015-06-15
    YYYY-MON-DD 2015-JUN-15
    YYYY-MM-DD HH24:MI:SS FF3 2015-06-15 13:18:10 700
    DL Monday, June 15, 2015
    TS 1:18:10 PM

    Oracle 支持的格式

    
    Format  Description
    Y   年的最后一位数字,如:5
    YY  年的最后两位数字,如:15
    YYY 年的最后三位数字,如:015
    YYYY    年,如:2015
    Y,YYY   年用逗号分割
    SYYYY   年
    YEAR    年拼写,如:TWENTY FIFTEEN
    SYEAR   年拼写,如:TWENTY FIFTEEN
    I   ISO年的最后一位数字,如:5
    IY  ISO年的最后两位数字,如:15
    IYY ISO年的最后三位数字,如:015
    IYYY    ISO年,如:2015
    RR  两位数字年,如:15
    RRRR    四位数字年,如:2015
         
    MM  Month (01-12)
    MON 月份简称,如:JUN
    MONTH   月份全称,如:JUNE
    RM  罗马数字月份
         
    D   Day of week (1-7)
    DD  Day of month (1-31)
    DDD Day of year (1-366)
         
    HH  Hour of day (1-12)
    HH12    Hour of day (1-12)
    HH24    Hour of day (0-23)
    MI  Minute (0-59)
    SS  Second (0-59)
    SSSSS   Seconds past midnight
    FF [1..9]   毫秒
         
    DS  日期简称,如:6/12/2015
    DL  日期全称,如:Friday, June 12, 2015
    TS  时间简称,如:5:18:03 PM
         
    CC  世纪,如:21
    SCC 世纪,如:21
    Q   Quarter of year (1, 2, 3, 4)
    W   Week of month (1-5)
    WW  Week of year (1-53)
    IW  ISO Week of year (1-52 or 1-53)
    DY  星期简称,如:Fri
    DAY 星期全称,如:Friday 
     
    AM   
    A.M.     
    PM   
    P.M.     
    AD   
    A.D.     
    BC   
    B.C.     
    TZD 夏令时
    TZR 时区
    TZH 时区之时差
    TZM 时区之分钟差
    EE  era 全称
    E   era 简称
    J   The number of days since January 1, 4712 BC
    FM  去掉首尾空格
    FX  精确匹配
    X   秒和毫秒分隔符
    TH  DDTH --> 4th
    SP  DDSP -->FOUR
    SPTH    DDSPTH --> FOURTH
    THSP    DDTHSP --> FOURTH
    

    默认情况下,Oracle 格式化日期时,有一定的容错性,如下面的 SQL 返回正确的结果。

    select to_date('20150612', 'YYYY/MM/DD') from dual  
    select to_date('2015#06#12', 'YYYY/MM/DD') from dual  
    

    如果你想精确匹配,你可以加上 FX修饰符,如:
    select to_date('2015/06/12', 'FXYYYY/MM/DD') from dual

    参考整理自:

    http://blog.csdn.net/shangboerds/article/details/46502711
    http://www.cnblogs.com/duhuo/p/5650876.html

    相关文章

      网友评论

          本文标题: Oracle Mysql 日期格式化

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