作者:胖头鱼的鱼缸(尹海文) Oracle ACE Pro: Database PostgreSQL ACE 10年+数据库行业经验 拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证 墨天轮MVP,ITPUB认证专家 圈内拥有“总监”称号,非著 名社恐(社交恐怖分子) 全网同名:胖头鱼的鱼缸 ITPUB:yhw1809 除授权转载并标明出处外,均为“非法”抄袭
前面针对Oracle AI Database 23.26.2中便于本地演示的新特性已经完成了,接下来将使用若干期演示23.26.1的新特性。
Oracle AI Database 23.26.1引入了DATEDIFF函数,用于计算两个日期之间的差异。该函数返回两个DATE或TIMESTAMP值之间按指定单位(天、月、年等)计算的数量差。
DATEDIFF(unit, date1, date2)
支持的日期单位(unit):
参数说明:
行为细节:
同之前一样,使用用户NFTEST,已授权DB_DEVELOPER_ROLE角色,测试操作均在NFTEST用户下执行。
CREATE TABLE nwc_sales ( sale_id NUMBER PRIMARY KEY, product VARCHAR2(30), region VARCHAR2(30), amount NUMBER, sale_date DATE); INSERT INTO nwc_sales VALUES (1, 'Widget', 'East', 100, DATE '2026-01-15'); INSERT INTO nwc_sales VALUES (2, 'Widget', 'West', 150, DATE '2026-01-20'); INSERT INTO nwc_sales VALUES (3, 'Gadget', 'East', 200, DATE '2026-02-10'); INSERT INTO nwc_sales VALUES (4, 'Gadget', 'West', 120, DATE '2026-02-15'); INSERT INTO nwc_sales VALUES (5, 'Widget', 'East', 80, DATE '2026-03-01'); INSERT INTO nwc_sales VALUES (6, 'Gadget', 'West', 300, DATE '2026-03-05'); COMMIT;

SELECT sale_id, product, region, sale_date, DATEDIFF(DAY, SYSDATE, sale_date) AS days_since_sale FROM nwc_sales ORDER BY sale_id;

SELECT sale_id, product, region, sale_date, DATEDIFF(MONTH, sale_date, DATE '2026-03-05') AS months_to_mar5 FROM nwc_sales ORDER BY sale_id;

SELECT sale_id, product, region, sale_date, DATEDIFF(YEAR, sale_date, DATE '2027-01-01') AS years_to_2027 FROM nwc_sales ORDER BY sale_id;

SELECT DATEDIFF(DAY, TIMESTAMP '2026-01-15 08:30:00', TIMESTAMP '2026-01-15 20:45:00') AS partial_day_diff, DATEDIFF(DAY, TIMESTAMP '2026-01-15 00:00:00', TIMESTAMP '2026-02-15 00:00:00') AS full_month_days, DATEDIFF(MONTH, TIMESTAMP '2026-01-15 00:00:00', IMESTAMP '2026-06-15 00:00:00') AS month_diff FROM dual;

WITH product_dates AS ( SELECT product, MIN(sale_date) AS earliest_sale, MAX(sale_date) AS latest_sale FROM nwc_sales GROUP BY product ) SELECT product, earliest_sale, latest_sale, DATEDIFF(DAY, latest_sale, earliest_sale) AS day_span, DATEDIFF(MONTH, latest_sale, earliest_sale) AS month_span, DATEDIFF(YEAR, latest_sale, earliest_sale) AS year_span FROM product_dates ORDER BY product;

SELECT sale_id, product, sale_date, DATEDIFF(DAY, sale_date, DATE '2026-03-01') AS days_before_mar1 FROM nwc_sales WHERE DATEDIFF(DAY, sale_date, DATE '2026-03-01') <= 30 ORDER BY sale_date;

本期对Oracle AI Database 26ai,23.26.1版本新引入的DATEDIFF函数新特性进行了完整介绍与实战演示,这是一个在时间上非常实用的开发增强。
老规矩,知道写了些啥。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31466763/viewspace-3176335/ ,如需转载,请注明出处,否则将追究法律责任。