zoukankan      html  css  js  c++  java
  • Oracle中的TO_DATE和TO_CHAR函数以及日期处理

    本文不再更新,可能存在内容过时的情况,实时更新请移步我的新博客:Oracle中的TO_DATE和TO_CHAR函数以及日期处理

    oracle 中 TO_DATE 函数的时间格式,以 2008-09-10 23:45:56 为例。

    Oracle中日期的格式

    Year(年):

    格式 说明 显示值 备注
    yy two digits(两位年) 08
    yyy three digits(三位年) 008
    yyyy four digits(四位年) 2008

    Month(月):

    格式 说明 显示值 备注
    mm number(两位月) 09
    mon abbreviated(字符集表示) 9月 若是英文版,则显示sep
    month spelled out(字符集表示) 9月 若是英文版, 则显示 september

    Day(日):

    格式 说明 显示值 备注
    dd number(当月第几天) 10
    ddd number(当年第几天) 254
    dy abbreviated(当周第几天简写) 星期三 若是英文版, 则显示 wed
    day spelled out(当周第几天全写) 星期三 若是英文版, 则显示 wednesday
    ddspth spelled out thirteenth 格式后缀 SP:相应日期部分的英文拼写 TH:相应日期部分日的序号,即在表示日的数字后加”th”

    Hour(时):

    格式 说明 显示值 备注
    hh two digits(12小时进制) 11
    hh24 two digits(24小时进制) 23

    Minute(分):

    格式 说明 显示值 备注
    mi two digits(60进制) 45

    Second(秒):

    格式 说明 显示值 备注
    ss two digits(60进制) 56

    其他:

    格式 说明 显示值 备注
    Q digit(季度) 3
    WW digit(当年第几周) 37
    W digit(当月第几周) 2

    说明:

    12小时格式下时间范围为: 1:00:00 – 12:59:59(12 小时制下的 12:59:59 对应 24 小时制下的 00:59:59) ;24小时格式下时间范围为: 0:00:00 – 23:59:59

    Oracle中日期格式的转化

    1. 日期和字符串格式的转换(to_date,to_char)
    --日期格式转换为字符串
    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;   //获取时间的秒
    --字符串转换为日期格式
    select to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss')    from dual//
    

    2.求某天是星期几

    --查询
    select to_char(to_date('2015-12-13','yyyy-mm-dd'),'day') from dual;
    --输出
    星期三
    --查询
    select to_char(to_date('2015-12-13','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;
    --输出
    sunday
    

    设置日期语言的方式:

    ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';
    

    也可以这样:

    select to_date('2015-12-13','yyyy-mm-dd','NLS_DATE_LANGUAGE = American') from dual;
    

    3.计算两个日期之间的天数

    select floor(sysdate - to_date('20020405','yyyymmdd')) from dual;
    

    因此,你也可以计算两个日期之间毫秒数或当前日期的毫秒数

    --计算两个日期之间的毫秒数
    select (sysdate - to_date('1970-01-01','yyyy-mm-dd'))* 86400000  from dual;
    

    注:上面的计算需要根据时区进行调整,差别为8/24天,也就是8小时。

    4.不同时区的处理

    select new_time(date,timezone1,timezone2) from dual;
    

    函数说明:

    • 根据date在timezone1时区的时间,返回对应的在timezone2时区对应的时间;

    参数说明:

    • date:日期时间型表达式;
    • timezone1:旧时区;
    • timezone2: 新时区;

    时区参数:

    大西洋标准时间:     	AST或ADT   
    阿拉斯加_夏威夷时间:	HST或HDT   
    英国夏令时:         	BST或BDT   
    美国山区时间:	   	MST或MDT   
    美国中央时区:		CST或CDT   
    新大陆标准时间:		NST   
    美国东部时间:		EST或EDT   
    太平洋标准时间:		PST或PDT   
    格林威治标准时间:	GMT   
    Yukou标准时间:		YST或YDT 
    

    5.月份加减

    --add_months(date,n):返回date加上n个月后的新日期
    select sysdate ,add_months(sysdate,3)  from dual;
    

    6.获取指定日期所属季度

    select to_char(to_date('2019-12-26','yyyy-mm-dd'),'Q') from dual;
    

    本文不再更新,可能存在内容过时的情况,实时更新请移步我的新博客:Oracle中的TO_DATE和TO_CHAR函数以及日期处理

  • 相关阅读:
    Linux
    bzoj 1834
    bzoj 1002 找规律(基尔霍夫矩阵)
    bzoj 1005 组合数学 Purfer Sequence
    bzoj 1601 最小生成树
    bzoj 1001 平面图转对偶图 最短路求图最小割
    bzoj 1192 二进制
    bzoj 1012 基础线段树
    bzoj 1044 贪心二分+DP
    bzoj 1011 近似估计
  • 原文地址:https://www.cnblogs.com/cobcmw/p/12103264.html
Copyright © 2011-2022 走看看