插件窝 干货文章 介绍Oracle数据库中的日期格式转换

介绍Oracle数据库中的日期格式转换

日期 SELECT 格式 函数 164    来源:    2025-04-29

Oracle数据库中的日期格式转换

Oracle数据库提供了多种函数来处理日期和时间数据的格式转换。以下是一些常用的日期格式转换方法和函数:

TO_CHAR函数 - 日期转字符串

TO_CHAR函数用于将日期或时间戳转换为指定格式的字符串:

SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM dual;
-- 结果示例:2023-11-15 14:30:45

SELECT TO_CHAR(SYSDATE, 'DD-MON-YYYY') FROM dual;
-- 结果示例:15-NOV-2023

TO_DATE函数 - 字符串转日期

TO_DATE函数用于将字符串转换为日期类型:

SELECT TO_DATE('2023-11-15', 'YYYY-MM-DD') FROM dual;

SELECT TO_DATE('15-Nov-2023 14:30', 'DD-Mon-YYYY HH24:MI') FROM dual;

常用日期格式元素

格式元素 说明 示例
YYYY 4位年份 2023
YY 2位年份 23
MM 月份(01-12) 11
MON 月份的缩写 NOV
MONTH 月份的全名 NOVEMBER
DD 月中的日(01-31) 15
D 周中的日(1-7) 4
DY 星期的缩写 WED
DAY 星期的全名 WEDNESDAY
HH 小时(01-12) 02
HH24 小时(00-23) 14
MI 分钟(00-59) 30
SS 秒(00-59) 45
FF 毫秒(1-9位) 123456

其他日期函数

  1. EXTRACT - 提取日期部分

    SELECT EXTRACT(YEAR FROM SYSDATE) FROM dual;
    SELECT EXTRACT(MONTH FROM SYSDATE) FROM dual;
    
  2. TRUNC - 截断日期

    SELECT TRUNC(SYSDATE) FROM dual; -- 去掉时间部分
    SELECT TRUNC(SYSDATE, 'MM') FROM dual; -- 截取到月初
    
  3. ADD_MONTHS - 增加月份

    SELECT ADD_MONTHS(SYSDATE, 3) FROM dual; -- 3个月后的日期
    
  4. LAST_DAY - 获取月份最后一天

    SELECT LAST_DAY(SYSDATE) FROM dual;
    

时区转换

SELECT FROM_TZ(CAST(SYSDATE AS TIMESTAMP), 'UTC') AT TIME ZONE 'America/New_York' 
FROM dual;

NLS_DATE_FORMAT参数

Oracle使用NLS_DATE_FORMAT参数定义默认日期格式:

-- 查看当前会话的日期格式
SELECT value FROM nls_session_parameters WHERE parameter = 'NLS_DATE_FORMAT';

-- 修改当前会话的日期格式
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';

掌握这些日期格式转换函数和技巧,可以灵活处理Oracle数据库中的日期和时间数据。