首页 > 代码库 > 使用日期

使用日期

Oracle数据库以数字格式存储日期和时间,这种格式支持存储世纪、年、月、日、时、分、秒。

sysdate函数,没有参数,返回数据库服务器当前的系统日期和时间。

select sysdate from dual;

 

日期运算:两个日期之间只能使用减法运算。Date1 - Date2 = number。两个日期相减返回天数,是数值类型。

SQL> select to_date(2017-10-09) -to_date(2017-09-09) from dual;

TO_DATE(2017-10-09)-TO_DATE(2017-09-09)
-------------------------------------------
                                         30

 

months_between函数,返回两个日期之间的月数(日期不对奇则按每月31天):

SQL> select months_between(sysdate,sysdate-31) from dual;

MONTHS_BETWEEN(SYSDATE,SYSDATE-31)
----------------------------------
                                 1

 SQL> select months_between(‘2017-04-01‘, ‘2017-01-01‘) from dual;

 MONTHS_BETWEEN(‘2017-03-01‘,‘2017-02-01‘)
 -----------------------------------------
 3

 

 

add_months函数,给日期加或减月数,返回日期:

SQL> select sysdate, add_months(sysdate, 2), add_months(sysdate, 2.5) from dual;

SYSDATE             ADD_MONTHS(SYSDATE, ADD_MONTHS(SYSDATE,
------------------- ------------------- -------------------
2017-04-15 17:58:31 2017-06-15 17:58:31 2017-06-15 17:58:31

-- 忽略小数2与2.5作用相同

 

 

next_day函数,返回指定的日子(一星期内)下一次出现的日期。(星期天是第一天):

SQL> select next_day(‘2017-04-18‘, 7) from dual;

NEXT_DAY(‘2017-04-1-------------------
2017-04-22 00:00:00

SQL> select next_day(‘2017-04-18‘, 星期六) from dual;

NEXT_DAY(‘2017-04-1
-------------------
2017-04-22 18:05:56

-- 2017-04-18星期二,下一个星期六是2017-04-22,星期六是一周的第7天,所以用next_day(date,7)

 

 

last_day函数,返回当前日期,月份的最后一天,日期类型:

SQL> select last_day(2017-4-18) from dual;

LAST_DAY(‘2017-4-18
-------------------
2017-04-30 00:00:00

-- 返回当前日期,当月的最后一天

 

 

round日期的四舍五入:

SQL> select sysdate, round(sysdate), round(sysdate,yyyy), round(sysdate,MM), round(sysdate,DD) from dual;

SYSDATE             ROUND(SYSDATE)      ROUND(SYSDATE,‘YYYY ROUND(SYSDATE,‘MM‘) ROUND(SYSDATE,‘DD‘)
------------------- ------------------- ------------------- ------------------- -------------------
2017-04-16 18:31:13 2017-04-17 00:00:00 2017-01-01 00:00:00 2017-05-01 00:00:00 2017-04-17 00:00:00

 

 

trunc日期的截取:

SQL> select sysdate, trunc(sysdate), trunc(sysdate,yyyy), trunc(sysdate,MM), trunc(sysdate,DD) from dual;

SYSDATE             TRUNC(SYSDATE)      TRUNC(SYSDATE,‘YYYY TRUNC(SYSDATE,‘MM‘) TRUNC(SYSDATE,‘DD‘)
------------------- ------------------- ------------------- ------------------- -------------------
2017-04-16 18:32:45 2017-04-16 00:00:00 2017-01-01 00:00:00 2017-04-01 00:00:00 2017-04-16 00:00:00

 

使用日期