PL/SQL

PL/SQL 知识量:16 - 57 - 244

6.3 日期处理函数><

获取系统日期函数- 6.3.1 -

SYSDATE函数可以获取数据库系统的当前日期,通常在插入数据时作为默认日期使用。此函数不带任何参数。

示例:

SQL> select sysdate from people where id=1;

SYSDATE
-----------
2023-8-7 10

获取系统时间函数- 6.3.2 -

SYSTIMESTAMP函数与SYSDATE函数相似,它会返回系统时间,时间精确到微秒。此函数不带任何参数。

示例:

SQL> select systimestamp from people where id=1;

SYSTIMESTAMP
--------------------------------------------------------------------------------
07-8月 -23 10.17.01.126000 上午 +08:00

月份增加函数- 6.3.3 -

ADD_MONTHS函数可以实现日期和月份的计算,它可以在给定的日期上添加相当于月份的整数,然后重新计算日期。语法结构如下:

ADD_MONTHS(date,integer)

简要说明:

  • date:给定的日期。

  • integer:表示要添加的月数。当为负数时,表示当前日期减去该月数。

示例:

SQL> select add_months(to_date('2023-10-09','yyyy-mm-dd'),2) from people where id=1;

ADD_MONTHS(TO_DATE('2023-10-09','YYYY-MM-DD'),2)
------------------------------------------------
2023-12-9

SQL> select add_months(to_date('2023-10-09','yyyy-mm-dd'),-2) from people where id=1;

ADD_MONTHS(TO_DATE('2023-10-09','YYYY-MM-DD'),-2)
-------------------------------------------------
2023-8-9

SQL> select add_months(to_date('2023-4-30','yyyy-mm-dd'),-2) from people where id=1;

ADD_MONTHS(TO_DATE('2023-4-30','YYYY-MM-DD'),-2)
------------------------------------------------
2023-2-28

当该函数中给出的日期是月的最后一天时,增加月份后返回的结果也将是新月份的最后一天;而如果新的日期月份比指定日期月份的天数少,则函数将返回当月的最后一天,例如一月份变二月份后,日期会返回2月28日。

获取两个日期之间的月份数函数- 6.3.4 -

MONTHS_BETWEEN函数具有两个参数,可以获取这两个参数之间的月份数。具体的语法结构如下:

MONTHS_BETWEEN(date1,date2)

简要说明:

  • date1:日期类型。

  • date2:日期类型。

  • date1>date2时,如果两个参数表示的是某月中相同的一天,或它们都是某月中的最后一天,那么函数会返回整数;否则,将返回小数。

  • date1<date2时,函数返回负值。

示例:

SQL> select months_between(to_date('2023-4-30','yyyy-mm-dd'),to_date('2023-5-30','yyyy-mm-dd')) as test1 from people where id=1;

     TEST1
----------
        -1

SQL> select months_between(to_date('2023-7-3','yyyy-mm-dd'),to_date('2023-5-30','yyyy-mm-dd')) as test2 from people where id=1;

     TEST2
----------
1.12903225

获取某月最后一天函数- 6.3.5 -

LAST_DAY函数可以返回给定日期所在月份的最后一天,它有一个参数。具体的语法结构如下:

LAST_DAY(date)

示例:

SQL> select last_day(to_date('2023-11-11','yyyy-mm-dd')) from people where id=1;

LAST_DAY(TO_DATE('2023-11-11','YYYY-MM-DD'))
--------------------------------------------
2023-11-30