博客网站程序网站服务费可以做宣传费吗
日期和时间函数:SYSDATE、TO_DATE、TO_CHAR 等
 
在 Oracle 数据库中,日期和时间函数用于处理日期和时间数据。它们在记录创建时间、分析时间间隔、格式化输出等场景中非常重要。本文将详细讲解常用的日期和时间函数及其应用。
一、SYSDATE:获取当前系统日期和时间
 
1. 功能
SYSDATE 返回数据库服务器当前的日期和时间。
2. 语法
SYSDATE
 
3. 示例
SELECT SYSDATE AS current_date
FROM dual;
-- 结果:2024-12-11 14:30:45
 
4. 提取日期的部分信息
可以结合其他函数提取日期部分:
SELECT EXTRACT(YEAR FROM SYSDATE) AS current_year,EXTRACT(MONTH FROM SYSDATE) AS current_month,EXTRACT(DAY FROM SYSDATE) AS current_day
FROM dual;
-- 结果:2024 | 12 | 11
 
二、TO_DATE:将字符串转换为日期
 
1. 功能
TO_DATE 函数将字符串格式的日期转换为 Oracle 的日期类型。
2. 语法
TO_DATE(string, format_model)
 
string:待转换的日期字符串。format_model:指定字符串的格式。
3. 常用格式符号
| 格式符 | 描述 | 
|---|---|
YYYY | 四位年份 | 
MM | 两位月份 | 
DD | 两位日期 | 
HH24 | 24 小时制小时 | 
MI | 分钟 | 
SS | 秒 | 
4. 示例
SELECT TO_DATE('2024-12-11 14:30:45', 'YYYY-MM-DD HH24:MI:SS') AS converted_date
FROM dual;
-- 结果:2024-12-11 14:30:45
 
三、TO_CHAR:将日期转换为字符串
 
1. 功能
TO_CHAR 函数将日期类型的数据转换为指定格式的字符串。
2. 语法
TO_CHAR(date, format_model)
 
date:要转换的日期。format_model:指定转换后的字符串格式。
3. 示例
将当前日期转换为指定格式:
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') AS formatted_date
FROM dual;
-- 结果:2024-12-11 14:30:45
 
获取星期和月份名称:
SELECT TO_CHAR(SYSDATE, 'DAY') AS week_day,TO_CHAR(SYSDATE, 'MONTH') AS month_name
FROM dual;
-- 结果:WEDNESDAY | DECEMBER
 
四、日期加减运算
Oracle 支持对日期进行加减操作,直接以天为单位计算。
1. 日期加法
增加 10 天:
SELECT SYSDATE + 10 AS future_date
FROM dual;
-- 结果:2024-12-21
 
2. 日期减法
减去 5 天:
SELECT SYSDATE - 5 AS past_date
FROM dual;
-- 结果:2024-12-06
 
3. 计算两个日期的差值
返回天数:
SELECT SYSDATE - TO_DATE('2024-12-01', 'YYYY-MM-DD') AS days_difference
FROM dual;
-- 结果:10
 
五、ADD_MONTHS:增加或减少月份
 
1. 功能
ADD_MONTHS 函数用于在指定日期上增加或减少指定的月数。
2. 语法
ADD_MONTHS(date, number_of_months)
 
3. 示例
SELECT ADD_MONTHS(SYSDATE, 3) AS future_date,ADD_MONTHS(SYSDATE, -3) AS past_date
FROM dual;
-- 结果:2025-03-11 | 2024-09-11
 
六、LAST_DAY 和 NEXT_DAY
 
1. LAST_DAY:获取指定月份的最后一天
 
SELECT LAST_DAY(SYSDATE) AS last_day_of_month
FROM dual;
-- 结果:2024-12-31
 
2. NEXT_DAY:获取指定日期之后的下一个特定星期几
 
SELECT NEXT_DAY(SYSDATE, 'FRIDAY') AS next_friday
FROM dual;
-- 结果:2024-12-13
 
七、日期格式化的常见应用
1. 获取年、月、日
SELECT TO_CHAR(SYSDATE, 'YYYY') AS year,TO_CHAR(SYSDATE, 'MM') AS month,TO_CHAR(SYSDATE, 'DD') AS day
FROM dual;
-- 结果:2024 | 12 | 11
 
2. 获取时、分、秒
SELECT TO_CHAR(SYSDATE, 'HH24') AS hour,TO_CHAR(SYSDATE, 'MI') AS minute,TO_CHAR(SYSDATE, 'SS') AS second
FROM dual;
-- 结果:14 | 30 | 45
 
八、综合实例
1. 计算两日期间的完整月数差
SELECT MONTHS_BETWEEN(TO_DATE('2025-06-01', 'YYYY-MM-DD'), TO_DATE('2024-12-01', 'YYYY-MM-DD')) AS months_difference
FROM dual;
-- 结果:6
 
2. 自动设置某日期为本月的第一天
SELECT TRUNC(SYSDATE, 'MM') AS first_day_of_month
FROM dual;
-- 结果:2024-12-01
 
3. 格式化输出为自定义字符串
SELECT TO_CHAR(SYSDATE, '"Today is" DDTH MONTH, YYYY') AS custom_format
FROM dual;
-- 结果:Today is 11TH DECEMBER, 2024
 
九、小结
SYSDATE提供当前日期和时间。TO_DATE将字符串转换为日期,格式灵活多样。TO_CHAR用于将日期转为自定义格式的字符串。- 日期计算和运算支持天数、月份、年等单位,结合函数如 
ADD_MONTHS、LAST_DAY等,可以轻松实现复杂的日期处理。 
通过熟练使用这些函数,可以大幅提升日期和时间操作的效率和准确性。
