如何在 Oracle 中使用 DATETIME 函数?
问题:
您想使用 datetime 函数来提取或处理日期时间。
解决方案
ADD_MONTHS()
ADD_MONTHS(x, y) 返回将 y 个月添加到 x 的结果。如果 y 为负数,则从 x 中减去 y 个月。
示例
-- 添加 12 个月 SELECT ADD_MONTHS('01-JAN-2020', 12) FROM Dual;
输出
-- 01/JAN/21
示例
-- 减去 12 个月 SELECT ADD_MONTHS('01-JAN-2020', -12) FROM Dual;
输出
-- 01/JAN/21
我们可以为 ADD_MONTHS() 函数提供时间和日期。
示例
SELECT ADD_MONTHS(TO_DATE('01-JAN-2020 01:01:01','DD-MON-YYYY HH24:MI:SS'), 2) FROM Dual;
输出
-- 2020年3月1日
LAST_DAY()
LAST_DAY(x) 返回x 月份的最后一天。
示例
SELECT LAST_DAY('01-JAN-2020') FROM Dual;
输出
-- 31/JAN/20
MONTHS_BETWEEN()
MONTHS_BETWEEN(x, y) 返回 x 和 y 之间的月份数。如果 x 在日历中出现在 y 之前,则 MONTHS_BETWEEN() 返回的数字为负数
示例
SELECT MONTHS_BETWEEN('28-JUN-2020', '01-JAN-2020') FROM dual;
输出
-- 5.87096774193548387096774193548387096774
在上面的例子中,较晚的日期(2020 年 6 月 28 日)首先出现,返回的结果为正数,如果我们翻转日期,则结果为负数。
示例
SELECT MONTHS_BETWEEN( '2020 年 1 月 1 日', '2020 年 6 月 28 日') FROM Dual;
输出
-- -5.87096774193548387096774193548387096774
NEXT_DAY()
NEXT_DAY(x, day) 返回下一个日期x 之后的日期;您可以将日期指定为文字字符串。
示例
SELECT NEXT_DAY('01-JAN-2020', 'SATURDAY') FROM Dual;
输出
-- 04/JAN/20
SYSDATE
SYSDATE 返回数据库服务器操作系统中设置的当前日期时间。以下示例获取当前日期:
示例
SELECT SYSDATE FROM Dual;
输出
-- 2020年11月13日
TRUNC()
TRUNC(x [, unit]) 截断 x。默认情况下,x 会被截断到一天的开头。如果您提供了可选的单位字符串,x 也会被截断到该单位;例如,MM 会将 x 截断到该月的第一天。