- DATE数据类型介绍
- 在Oracle SQL中,DATE是一种用于存储日期和时间的数据类型。它可以存储世纪、年、月、日、时、分和秒。日期的范围是从公元前4712年1月1日到公元9999年12月31日。
- 例如,一个典型的DATE值可能是'20 - JAN - 2025 12:30:00',其中包括日期(20日,1月,2025年)和时间(12小时30分0秒)。
- 插入DATE值
- 可以使用多种方式插入DATE值。
- 一种方式是使用TO_DATE函数将字符型日期转换为DATE类型插入表中。例如,假设有一个名为
employees
的表,其中有一个hire_date
列是DATE类型,插入一个日期值可以这样做:
INSERT INTO employees (hire_date)
VALUES (TO_DATE('2025-01-10 14:30:00', 'YYYY - MM - DD HH24:MI:SS'));
- 这里
TO_DATE
函数的第一个参数是要转换的字符型日期,第二个参数是日期格式模板,用于告诉Oracle如何解析第一个参数中的日期和时间。
- 查询DATE值
- 当查询DATE类型的列时,Oracle会按照默认的日期格式显示日期。不过,你可以使用函数来格式化日期显示。
- 例如,使用
TO_CHAR
函数将DATE类型转换为字符型并按照指定格式显示。如果要查询employees
表中的hire_date
列并以'YYYY-MM - DD'格式显示,可以这样写:
SELECT TO_CHAR(hire_date, 'YYYY - MM - DD') FROM employees;
- 日期运算
- 在Oracle SQL中,可以对DATE类型进行算术运算。
- 例如,可以计算两个日期之间的间隔天数。假设有一个
orders
表,其中有order_date
和delivery_date
两个DATE类型的列,要计算每个订单从下单到交付的天数,可以使用以下查询:
SELECT (delivery_date - order_date) AS days_between
FROM orders;
- 这里
delivery_date - order_date
的结果是一个数字,表示两个日期之间间隔的天数。
- 还可以在日期上加上或减去一个数字来得到新的日期。例如,要获取从当前日期起7天后的日期,可以使用:
SELECT SYSDATE + 7 FROM dual;
- 其中
SYSDATE
是一个Oracle函数,它返回当前日期和时间。
- 日期函数
- Oracle提供了许多日期相关的函数。
-
MONTHS_BETWEEN
函数用于计算两个日期之间间隔的月数。例如,计算两个日期之间间隔的月数:
SELECT MONTHS_BETWEEN(date1, date2) FROM dual;
-
ADD_MONTHS
函数用于在一个日期上添加指定的月数。例如,在一个日期上添加3个月:
SELECT ADD_MONTHS(date, 3) FROM dual;
-
NEXT_DAY
函数用于获取指定日期之后的下一个指定星期几的日期。例如,获取给定日期之后的下一个星期一的日期:
SELECT NEXT_DAY(date, 'MONDAY') FROM dual;