精华内容
下载资源
问答
  • ORACLE时间函数

    万次阅读 2019-04-16 23:54:26
    SYSDATE:返回系统时间 select sysdate from dual; CURRENT_DATE:返回会话的时区中的系统日期(可以自己设置会话的时区,以区别于数据库时区) select current_date from dual; SYSTIMESTAMP:返回TIMESTAMP格式...

    SYSDATE:返回系统时间

    select sysdate from dual;
    

    CURRENT_DATE:返回会话的时区中的系统日期(可以自己设置会话的时区,以区别于数据库时区)

    select current_date from dual;
    

    SYSTIMESTAMP:返回TIMESTAMP格式的系统时间
    TIMESTAMP格式是时间戳,可精确到十亿分之一秒,默认精确到0.000001秒。

    select systimestamp from dual;
    

    两个时间格式的数据可以直接加减

    select holiday,actual_date, celebrated_date
    from holiday
    where celebrated_date - actual_date != 0;
    

    增加/减少天数,直接加减即可

    select sysdate + 1 from dual;
    

    增加/减少月份
    add_months(DATE inputdate,NUMBER added_months)

    select add_months(celebrated_date,6)
    from holiday
    
    select add_months(celebrated_date,-6)
    from holiday
    

    通过增加/减少日和月,就可以进行任意时间的加减,1 h = 1/24 , 1 min = 1/24/60 , 1 s = 1/24/60/60
                           1 week = 7 , 1 year = add_months(inputdate,12)

    日期和字符串相互转换并格式化
    TO_DATE(CHAR str [, CHAR fmt[, ‘NLS_DATE_LANGUAGE=’]])
    TO_CHAR(DATE date [, CHAR fmt[, ‘NLS_DATE_LANGUAGE=’]])

    select to_char(sysdate - 1/24,'YYYY-MM-DD HH24:mi:ss') from dual;            --这里分钟表示为'MI',虽然写成'MM'可能不报错,但可能会把分钟显示为月份的值,导致数据错误。
    
    select to_char(date '2018-03-05' + 1,'YYYYMMDD') from dual;     
    
    select to_char(to_date('2019-04-16','YYYY-MM-DD'),'DAY') from dual;        --'DAY'表示返回这个日期是星期几。
    
    select to_date('20190416','YYYYMMDD') from dual;
    
    select to_date('2019-04-16 23:25:17','YYYY-MM-DD HH24:MI:SS') from dual;     --这里分钟表示为'MI',不然会和月份的'MM'重复,引起报错 ORA-01810:格式代码出现两次
    

    选择最近/最早的日期

    GREATEST(DATE date1,DATE date2)/LEAST(DATE date1,DATE date2)

    注意:在处理类似于 ‘16-JAN-12’ 这样的字面值时,GREATEST和LEAST函数会将其视为字符串而不是日期处理,若比较字面值,一定要使用to_date()先转换成日期格式。

    select holiday, 
           least(actual_date,celebrated_date) as first,
    	   actual_date,
    	   celebrated_date
    from holiday
    where actual_date - celebrated_date != 0;
    

    计算从指定日期开始,下一个’星期几’是哪一天
    NEXT_DAY(DATE date,CHAR weekday)

    select next_day(cycle_date,'friday') pay_day               --从payday表中的cycle_date列的日期开始数,下一个周五是几月几日。
    from payday;
    

    计算指定日期所在月份的最后一天
    LAST_DAY(DATE date)

    select last_day(cycle_date)
    from payday;
    

    计算两个日期之间差几个月
    MONTHS_BETWEEN(DATE date1, DATE date2)

    select first_name,
           last_name,
    	   birthdate,
    	   floor(months_between(sysdate,birthdate)/12) as age           --可以计算年龄
    from birthday;
    
    展开全文
  • 有些朋友对ORACLE时间函数理解不是很透彻,接下来讲详细介绍,希望可以帮助到你们
  • oracle 时间函数

    2012-12-08 16:18:31
    oracle 时间函数
  • oracle时间函数

    2013-03-27 14:22:44
    oracle 时间函数汇总,详细介绍了oracle时间的截取,oracle时间函数年、月、日的具体使用,实用性很强。
  • oracle时间函数[文].pdf

    2021-10-11 05:22:21
    oracle时间函数[文].pdf
  • oracle时间函数处理总结大全。个人总结的oracle SQL里常用的时间函数,常用日期型函数 贡献给大家分享。。值得大家作为工具
  • Oracle日期函数

    2019-04-17 01:41:40
    NULL 博文链接:https://xiongxu.iteye.com/blog/1832330
  • Oracle 日期时间函数详解

    千次阅读 2020-02-24 15:22:33
    文章目录1 日期函数2 日期格式3 类型转换 1 日期函数 1. 常用日期函数 (1) add_months(date, n) : 'n' 个月前,'-n' 个月后 (2) months_between(date1, date2) : 月份差 'date1 - date2' 2. 时区(了解即可) ...

    1 日期函数

    1. 常用日期函数
       (1) add_months(date, n)	        : 'n' 个月前,'-n' 个月后
       (2) months_between(date1, date2) : 月份差 'date1 - date2'
    
    2. 时区(了解即可)
       (1) select dbtimezone from dual;
       (2) select sessiontimezone from dual;
       (3) select TZ_OFFSET('PST') from dual;
       (4) select * from v$timezone_names; -- 时区名
       (5) select new_time(current_date,'PST','EST') from dual; -- 转换
    

    示例:

    select sysdate 当前时间,
           
           trunc(sysdate) 当前日期, -- 返回 date 类型
           trunc(sysdate, 'Q') 当前季度第一天,
           trunc(sysdate, 'W') 当前周第一天, -- 周日 
           
           add_months(sysdate, 2) 两个月后,
           add_months(sysdate, -1) 两个月前,
           
           sysdate + 3 三天后,
           sysdate + 10 / (24 * 60 * 10) 十秒后,
           
           months_between(date '2020-10-01', date '2020-01-01') 日期月份差,
           
           next_day(sysdate, 2) 下周第二天, -- 下周一
           last_day(sysdate) 本月最后一天,
           
           round(sysdate) 舍入到最接近的日期, -- 精确到天
           round(sysdate, 'YEAR') 舍入到最接近的年,
           
           extract(year from sysdate) 当前年, -- 返回 number 类型, 同理,月:month,日:day
           extract(hour from timestamp '2020-11-17 11:22:33') 当前小时, -- 同理,分:minute,秒:second
           
           least(date '2020-01-01', date '2020-10-01') 返回日期列表最早的日期,
           greatest(date '2020-01-01', date '2020-10-01') 返回日期列表最晚的日期
      from dual;
    

    2 日期格式

    1. 常用日期格式 -- 不区分大小写
       select to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS') 当前时间 from dual;
       如: 2020-11-17 20:30:40
       
       (1) YYYY-MM-DD	'年'-'月'-'日' -- 四位数-两位数-两位数
       (2) HH24:MI:SS	'时':'分':'秒' -- HH12、HH : 均为 12 小时制
       
    2. 特别说明
       (1) 一周的第一天是 "周日"
    
    3. 参数设置
       (1) select * from nls_session_parameters; -- nls_date_language: simplified chinese
       (2) alter session set nls_date_language = 'AMERICAN'; -- 设置英文语言格式
    

    示例:

    select sysdate 当前时间,
           
           to_char(sysdate, 'YYYY') 四位年, -- 时、分、秒 同理
           to_char(sysdate, 'YY') 两位年, -- 同理还有1位和3位,用的较少(容易混淆)
           
           to_char(sysdate, 'MM') 月份,
           to_char(sysdate, 'MONTH') 月份带月份名, -- 若是英文语言格式,显示 november
           to_char(sysdate, 'MON') 月份带月份名简称, -- 若是英文语言格式,显示 nov (11月)
           to_char(sysdate, 'RM') 月份罗马数字,
           
           to_char(sysdate, 'DDD') 当年第n天,
           to_char(sysdate, 'DD') 当月第n天,
           to_char(sysdate, 'D') 当周第n天, -- 周日是第一天。day 的简称
           to_char(sysdate, 'DY') 星期几,
           
           to_char(sysdate, 'Q') 当年第n季度,
           
           to_char(sysdate, 'WW') 当年第n周,
           to_char(sysdate, 'W') 本月第n周,
           
           to_char(sysdate, 'HH24') "24小时制",
           to_char(sysdate, 'HH12') "12小时制" -- 默认 hh = hh12
      from dual;
    

    3 类型转换

    在这里插入图片描述

    基础数据准备:

    create table date_conversion_test (
       date_char      varchar2(20),
       date_date      date,
       date_timestamp timestamp
    );
    
    insert into date_conversion_test
      (date_char, date_date, date_timestamp)
    values
      (to_char(sysdate, 'YYYY-MM-DD'), sysdate, sysdate);
    

    示例:

    select to_char(t.date_date, 'YYYY-MM-DD') "date -> char",
           to_char(t.date_timestamp, 'YYYY-MM-DD') "timestamp -> char",
           to_date(t.date_char, 'YYYY-MM-DD') "char -> date",
           to_timestamp(t.date_char, 'YYYY-MM-DD') "char -> date"
      from date_conversion_test t;
    
    展开全文
  • Oracle日期与时间拼接函数以及时间处理函数- -干货 1.时间处理函数 在工作过程中是否有遇到源数据的时间存储为Integer类型的时间格式,如下: 序号 T_TIME_1 1 63272 2 55066 3 55975 4 31394 5 ...
  • oracle 时间函数 TO_DATE

    千次阅读 2018-10-18 21:05:05
    https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions183.htm ...该TO_DATE()函数接受三个参数: 1) char 是一个字符串值,它被转换为一个DATE值。它可以是任何数据类型CHAR,VARCHAR2,NC...

    https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions183.htm

     

    TO_DATE(char [, fmt [, 'nlsparam' ] ])

    参数

    TO_DATE()函数接受三个参数:

    1) char

    是一个字符串值,它被转换为一个DATE值。它可以是任何数据类型CHAR,VARCHAR2,NCHAR或NVARCHAR2的值。

    2) fmt

    是的日期和时间格式string

    fmt 参数是可选。如果忽略则取决于默认日期格式

    默认日期格式由NLS_TERRITORY初始化参数隐式确定,或者可以由NLS_DATE_FORMAT参数显式设置。

    'nlsparam'函数在此函数中的TO_CHAR作用与日期转换函数中的作用相同。

    fmt的理解请参考上一篇https://blog.csdn.net/uotail/article/details/83150030

    3) 'nlsparam'

    是一个表达式,用于指定日期和月份名称的语言string。该nls_language参数具有以下形式:

    1

    NLS_DATE_LANGUAGE = language

    这个'nlsparam'参数是可选的。如果省略它,该TO_DATE()函数将使用会话的默认语言。

    返回值

    TO_DATE()函数返回一个DATE与输入字符串对应的值。

     

    以下示例将字符串转换为日期:

    SELECT TO_DATE('January 15, 1989, 11:00 A.M.','Month dd, YYYY, HH:MI A.M.','NLS_DATE_LANGUAGE = American') FROM DUAL;
    
    

    如果NLS_TERRITORY参数设置为' AMERICA',则返回的值反映默认日期格式。不同的NLS_TERRITORY值会导致不同的默认日期格式:

    ALTER SESSION SET NLS_TERRITORY = 'KOREAN';
    SELECT TO_DATE( 'January 15, 1989, 11:00 A.M.','Month dd, YYYY, HH:MI A.M.','NLS_DATE_LANGUAGE = American') FROM DUAL;

    例子

    select to_date('2018-10-18 21:01:52','YYYY-MM-DD HH24:MI:SS') from dual

     SELECT TO_DATE( '5 Jan 2017', 'DD MON YYYY','NLS_DATE_LANGUAGE = American' ) FROM dual;

     

     

    展开全文
  • Oracle TO_CHAR()函数返回以指定格式表示的字符串DATE或INTERVAL值。 { datetime | interval }是一个DateTime或一个INTERVAL 类型,是要转换的日期 fmt是一个字符串,用于确定日期转换的格式。  如果省略...

    TO_CHAR({ datetime | interval } [, fmt [, 'nlsparam' ] ])

    Oracle  TO_CHAR()函数返回以指定格式表示的字符串DATE或INTERVAL值。

    { datetime | interval }是一个DateTime或一个INTERVAL 类型,是要转换的日期

    fmt是一个字符串,用于确定日期转换的格式。
        如果省略fmt,则date转换VARCHAR2为如下值:
          DATE 值将转换为默认日期格式的值。
          TIMESTAMP和TIMESTAMP WITH LOCAL TIME ZONE值将转换为默认时间戳格式的值。
          TIMESTAMP WITH TIME ZONE 值将使用时区格式转换为默认时间戳中的值。
          
    'nlsparam'参数指定了月和日名称的缩写语言。这个参数可以有这样的形式:
    'NLS_DATE_LANGUAGE = 语言 '
    例如,Monday,Mon,January,Jan等。
    如果省略'nlsparam',则此函数使用会话的默认日期语言。

    https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions180.htm

    字符串' 17:45:29' 的日期时间格式模型是' HH24:MI:SS'。
    字符串' 11-Nov-1999' 的日期时间格式模型是' DD-Mon-YYYY'。

    测试

    注意 要想达到    ”字符串' 11-Nov-1999' 的日期时间格式模型是' DD-Mon-YYYY' ”。需要指定 'nlsparam' 参数

    select TO_CHAR(sysdate,'DD-Mon-YYYY','NLS_DATE_LANGUAGE=English') from dual

    https://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements004.htm#i34510

    https://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements004.htm#i34924

    Uppercase Letters in Date Format Elements

    Capitalization in a spelled-out word, abbreviation, or Roman numeral follows capitalization in the corresponding format element. For example, the date format model 'DAY' produces capitalized words like 'MONDAY'; 'Day' produces 'Monday'; and 'day' produces 'monday'.

    拼写单词,缩写或罗马数字中的大写在相应的格式元素中大写。例如,日期格式模型'DAY'产生像'MONDAY'这样的大写单词; 'Day'产生'Monday'; 而''day'产生'monday'。

    select TO_CHAR(sysdate,'DAY-Mon-YYYY','NLS_DATE_LANGUAGE=English') from dual
    select TO_CHAR(sysdate,'Day-Mon-YYYY','NLS_DATE_LANGUAGE=English') from dual
    select TO_CHAR(sysdate,'day-Mon-YYYY','NLS_DATE_LANGUAGE=English') from dual

    因为是英文文档,所以要指定'NLS_DATE_LANGUAGE=English'

    You can include these characters in a date format model:

    • Punctuation such as hyphens, slashes, commas, periods, and colons

    • Character literals, enclosed in double quotation marks

    These characters appear in the return value in the same location as they appear in the format model.

    您可以在日期格式模型中包含这些字符:

    • 标点符号,如连字符,斜杠,逗号,句点和冒号

    • 字符文字,用双引号括起来

    这些字符出现在返回值中与格式模型中显示的位置相同的位置。

    ElementSpecify in TO_* datetime functions?Description
    -
    /
    ,
    .
    ;
    :
    "text"
    

    Yes

    Punctuation and quoted text is reproduced in the result.

    格式符中可以包含左边的元素 

     select TO_CHAR(sysdate,' "今天" day-Mon-YYYY') from dual

    其次 格式字符串中还可以包含 空格 

    AD
    A.D.
    

    Yes

    AD indicator with or without periods.

    AD 在汉语中显示为公元

     select TO_CHAR(sysdate,'AD day-Mon-YYYY') from dual

    select TO_CHAR(sysdate,'A.D. day-Mon-YYYY') from dual   还是一样

    AM
    A.M.
    

    Yes

    Meridian indicator with or without periods.

    可以显示当前是下午还是上午 

     select TO_CHAR(sysdate,'AM day-Mon-YYYY') from dual

    BC
    B.C.
    

    Yes

    BC indicator with or without periods.

     select TO_CHAR(sysdate,'BC day-Mon-YYYY') from dual

      可见他和AM一样,都表示公元

    D
    

    Yes

    Day of week (1-7).

    select TO_CHAR(sysdate,'D') from dual 

     在我们底盘今天是星期四

    DAY
    

    Yes

    Name of day, padded with blanks to display width of the widest name of day in the date language used for this element.

    select TO_CHAR(sysdate,'DAY') from dual

    DD
    

    Yes

    Day of month (1-31).

     select TO_CHAR(sysdate,'DD') from dual

     嗯,今天是 10月18号

    DDD
    

    Yes

    Day of year (1-366).

    一年的第多少天

    select TO_CHAR(sysdate,'DDD') from dual 

     下面这很好理解

    HH
    

    Yes

    Hour of day (1-12).

    HH12
    

    No

    Hour of day (1-12).

    HH24
    

    Yes

    Hour of day (0-23).

     

    MI
    

    Yes

    Minute (0-59). 电脑上当前的分钟 比 oracle查出来的分钟 多了3分钟

    MM
    

    Yes

    Month (01-12; January = 01).

    MON
    

    Yes

    Abbreviated name of month.

    MONTH
    

    Yes

    Name of month, padded with blanks to display width of the widest name of month in the date language used for this element.

    SS
    

    Yes

    Second (0-59).

    IW
    

    No

    Week of year (1-52 or 1-53) based on the ISO standard. 一年中的第几周

    WW
    

    No

    Week of year (1-53) where week 1 starts on the first day of the year and continues to the seventh day of the year.

    一年中的第几周 ,一年的第一天就是第一周的第一天  即每年的1月1日作为一周的第一天

    W
    

    No

    Week of month (1-5) where week 1 starts on the first day of the month and ends on the seventh.

    一个月的第几周, 将每月的第一天作为一周的开始 ,

    select TO_CHAR(sysdate,'IW') from dual  --42 一年中的第几周
    select TO_CHAR(sysdate,'WW') from dual  --42
    select TO_CHAR(TO_DATE('2018-01-01','YYYY-MM-DD'),'YYYY-MM-DD DAY') from dual  --2018-10-01 星期一 可见一周第一天就是星期一  即1月1日都是星期一


    select TO_CHAR(sysdate,'W','NLS_DATE_LANGUAGE=English')  from dual  --3  一个月中的第几周
    SELECT TO_DATE('2018-10-01','YYYY-MM-DD') FROM DUAL  --01-10月-18
    select TO_CHAR(TO_DATE('2018-10-01','YYYY-MM-DD'),'YYYY-MM-DD DAY') from dual  --2018-10-01 星期一 可见一周第一天就是星期一  即每月1日都是星期一

     

     

    Y,YYY
    

    Yes

    Year with comma in this position.

     

    YYYY
    SYYYY
    

    Yes

    4-digit year; S prefixes BC dates with a minus sign.

    YYY
    YY
    Y
    

    Yes

    Last 3, 2, or 1 digit(s) of year.

     

    展开全文
  • ORACLE日期时间函数大全

    千次阅读 2020-03-02 21:44:25
    一、oracle sql日期比较 在今天之前: select * from up_date where update < to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss') select * from up_date where update <= to_date('2007-09-07 00:00:00'...
  • 简单的oracle 时间比较函数,自己在网上找到并加以整理出来。
  • Oracle日期函数和转换函数

    万次阅读 多人点赞 2019-04-25 20:54:03
    一、日期函数 日期函数用于处理date类型的数据,两个日期相减返回日期之间相差的天数。日期不允许做加法运算,无...(1)sysdate: 该函数返回系统时间 (2)months_between(m,n)日期m和日期n相差多少月数 (3)add...
  • oracle常用时间函数,取日期差,求下一个星期几,求每月的第一天,求每月的最后一天,年份加减,月份加减等
  • 本文并不准备介绍全部的oracle函数,当前情势下,俺也还没这个时间,需要学习的东西太多了,要把多数时间花在学习经常能用上的技术方面:),所以如果是准备深入了解所有oracle函数的朋友,还是去关注:Oracle SQL ...
  • Oracle 自定义函数

    2015-08-14 20:06:34
    包含自定义身份证函数,小写转大写等等。自己总结了很长时间,以后会继续更新的。
  • 主要介绍了Oracle计算时间差常用函数,涉及用法代码及示例,具有一定参考价值。需要的朋友可以了解下。
  • 里面有字符是否符时间期的两个函数,一个纯日期,还有一个加了时分秒。经测试可以用的
  • ORACLE时间函数(SYSDATE)简单理解

    千次阅读 2016-10-26 17:22:51
    ORACLE时间函数(SYSDATE)简析  1:取得当前日期是本月的第几周  SQL> select to_char(sysdate,'YYYYMMDD W HH24:MI:SS') from dual;  TO_CHAR(SYSDATE,'YY  -------------------  20030327 4 18:...
  • oracle时间函数,new_day()

    千次阅读 2017-05-18 11:07:58
    二,时间函数 1.new_day(datetime,String str) 这个字面是明天,但其实表示下一个星期几的,所以,看例子: select new_day(sysdate, 'monday' ) from dual; select new_day(sysdate, '2' ) from ...
  • oracle 时间函数 TRUNC (date)

    千次阅读 2018-10-19 18:00:07
     https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions201.htm Purpose The TRUNC (date) function returns date with the time portion of the day truncated to the uni...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 148,287
精华内容 59,314
关键字:

oracle时间函数