一、SYSDATE函数
1、SYSDATE函数的概述
SYSDATE函数是Oracle SQL语言中的一个时间函数,返回的是当前日期和时间。注意,它返回的是包含时分秒的日期时间值,而不仅仅是日期。例如,2019-09-19 14:25:36。
2、SYSDATE函数的使用场景
SYSDATE函数可以应用在各种场景中,比如记录数据库操作时间、分析数据的时间特征等等。下面是一个使用SYSDATE函数记录数据库操作时间的示例代码:
CREATE TABLE EMPLOYEE
(
ID NUMBER(5) PRIMARY KEY,
NAME VARCHAR2(20),
HIRE_DATE DATE,
LAST_UPDATE DATE DEFAULT SYSDATE
);
这个示例中,LAST_UPDATE列使用了SYSDATE函数的默认值。当插入一个新员工记录时,系统会自动将当前的日期时间保存进去。
二、ADD_MONTHS函数
1、ADD_MONTHS函数的概述
ADD_MONTHS函数可以在一个日期上增加指定的月数,返回的是新的日期值。它的基本语法是: ADD_MONTHS(date, months_to_add) 其中,date是要增加月份数的日期值,months_to_add是要增加的月数。
2、ADD_MONTHS函数的使用场景
ADD_MONTHS函数可以用于各种需要调整日期的场景,比如查询未来或过去某个时间段的数据。下面是一个查询最近6个月内订单的示例代码:
SELECT *
FROM ORDERS
WHERE ORDER_DATE > ADD_MONTHS(SYSDATE, -6);
这个示例中,将SYSDATE减去6个月的结果作为查询条件的起始日期。这样可以查询到最近6个月内的订单。
三、MONTHS_BETWEEN函数
1、MONTHS_BETWEEN函数的概述
MONTHS_BETWEEN函数可以计算两个日期之间相差的月份数(精确到小数点以下),可以用于计算利息、租金等需要按照月计息的场景。它的基本语法是: MONTHS_BETWEEN(date1, date2) 其中,date1和date2是要计算的两个日期。
2、MONTHS_BETWEEN函数的使用场景
MONTHS_BETWEEN函数可以用于各种需要计算日期差的场景。下面是一个计算员工工龄的示例代码:
SELECT ID, NAME, HIRE_DATE, TRUNC(MONTHS_BETWEEN(SYSDATE, HIRE_DATE) / 12) YEARS_OF_SERVICE
FROM EMPLOYEE;
这个示例中,MONTHS_BETWEEN函数计算出员工入职至今的月份数,然后除以12取整就是员工的工龄(单位:年)。
四、LAST_DAY函数
1、LAST_DAY函数的概述
LAST_DAY函数可以返回传入日期所在月份的最后一天的日期。它的基本语法是: LAST_DAY(date) 其中,date是要查询的日期。
2、LAST_DAY函数的使用场景
LAST_DAY函数可以用于各种需要计算月末、月初等日期的场景。下面是一个查询员工本月生日的示例代码:
SELECT *
FROM EMPLOYEE
WHERE MONTHS_BETWEEN(SYSDATE, BIRTHDAY) < 1
AND EXTRACT(DAY FROM SYSDATE) >= EXTRACT(DAY FROM BIRTHDAY)
OR MONTHS_BETWEEN(SYSDATE, BIRTHDAY) < 0
AND EXTRACT(DAY FROM SYSDATE) < EXTRACT(DAY FROM BIRTHDAY)
AND EXTRACT(DAY FROM SYSDATE) >= EXTRACT(DAY FROM LAST_DAY(SYSDATE - INTERVAL '1' MONTH));
这个示例中,使用了LAST_DAY函数获取上一个月的最后一天,然后判断员工的生日是否在当前月份。其中MONTHS_BETWEEN函数用于计算生日距离本月的月份数,EXTRACT函数用于提取生日日期的天数。
五、ROUND函数
1、ROUND函数的概述
ROUND函数可以将传入的日期进行四舍五入,保留到指定的单位(年、月、日等)。它的基本语法是: ROUND(date [, format]) 其中,date是要四舍五入的日期;format是要保留的单位。如果不指定format,默认保留到日。
2、ROUND函数的使用场景
ROUND函数可以用于各种需要精确计算日期的场景,比如计算年龄等。下面是一个计算员工年龄的示例代码:
SELECT ID, NAME, HIRE_DATE, ROUND(MONTHS_BETWEEN(SYSDATE, HIRE_DATE) / 12) AGE
FROM EMPLOYEE;
这个示例中,MONTHS_BETWEEN函数计算出员工入职至今的月份数,然后除以12取整并进行四舍五入就是员工的年龄。