Oracle查询星期几的中文显示

本文介绍了一个 SQL 查询示例,用于从数据库中获取当前日期对应的星期名称,并使用简体中文显示。此示例适用于需要在应用程序中展示日期相关信息的场景。
部署运行你感兴趣的模型镜像
select to_char(sysdate,'day','NLS_DATE_LANGUAGE=''SIMPLIFIED CHINESE''') from dual;

 

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

Oracle数据库中,若需将日期格式化为类似 **“2025年7月3日 星期四”** 的中文显示,可通过 **`TO_CHAR` 函数** 结合自定义格式模型实现。以下是具体方法: --- ### **方法1:直接格式化日期字段** 假设有一个日期字段(如 `your_date_column`)或直接使用日期值 `DATE '2025-07-03'`,使用以下SQL: ```sql SELECT TO_CHAR(DATE '2025-07-03', 'YYYY"年"MM"月"DD"日" DAY') AS formatted_date FROM dual; ``` **结果**: ``` FORMATTED_DATE ------------------- 2025年07月03日 星期四 ``` **说明**: - `YYYY` → 4位年份 - `MM` → 2位月份(自动补零) - `DD` → 2位日期(自动补零) - `DAY` → 英文星期全称(Oracle默认输出英文,需进一步处理为中文) --- ### **方法2:转换为中文星期(需自定义映射)** Oracle原生不支持直接输出中文星期,需通过 **`CASE WHEN`** 或 **自定义函数** 映射英文星期中文: ```sql SELECT TO_CHAR(DATE '2025-07-03', 'YYYY"年"MM"月"DD"日"') || ' ' || CASE TO_CHAR(DATE '2025-07-03', 'DAY') WHEN 'MONDAY' THEN '星期一' WHEN 'TUESDAY' THEN '星期二' WHEN 'WEDNESDAY' THEN '星期三' WHEN 'THURSDAY' THEN '星期四' WHEN 'FRIDAY' THEN '星期五' WHEN 'SATURDAY' THEN '星期六' WHEN 'SUNDAY' THEN '星期日' END AS formatted_date FROM dual; ``` **结果**: ``` FORMATTED_DATE ------------------- 2025年07月03日 星期四 ``` --- ### **方法3:动态显示当前日期的中文格式** 若需查询当前日期并格式化为中文: ```sql SELECT TO_CHAR(SYSDATE, 'YYYY"年"MM"月"DD"日"') || ' ' || CASE TO_CHAR(SYSDATE, 'DAY') WHEN 'MONDAY' THEN '星期一' WHEN 'TUESDAY' THEN '星期二' WHEN 'WEDNESDAY' THEN '星期三' WHEN 'THURSDAY' THEN '星期四' WHEN 'FRIDAY' THEN '星期五' WHEN 'SATURDAY' THEN '星期六' WHEN 'SUNDAY' THEN '星期日' END AS today_chinese FROM dual; ``` **结果示例**(假设今天是周四): ``` TODAY_CHINESE ------------------- 2023年10月05日 星期四 ``` --- ### **方法4:创建自定义函数简化调用** 若需频繁使用,可创建函数直接返回中文日期: ```sql CREATE OR REPLACE FUNCTION get_chinese_date(p_date IN DATE) RETURN VARCHAR2 IS v_weekday VARCHAR2(10); BEGIN v_weekday := CASE TO_CHAR(p_date, 'DAY') WHEN 'MONDAY' THEN '星期一' WHEN 'TUESDAY' THEN '星期二' WHEN 'WEDNESDAY' THEN '星期三' WHEN 'THURSDAY' THEN '星期四' WHEN 'FRIDAY' THEN '星期五' WHEN 'SATURDAY' THEN '星期六' WHEN 'SUNDAY' THEN '星期日' END; RETURN TO_CHAR(p_date, 'YYYY"年"MM"月"DD"日"') || ' ' || v_weekday; END; / -- 调用示例 SELECT get_chinese_date(DATE '2025-07-03') FROM dual; ``` **结果**: ``` GET_CHINESE_DATE(DATE'2025-07-03') ---------------------------------- 2025年07月03日 星期四 ``` --- ### **注意事项** 1. **语言环境**: - Oracle的 `DAY` 格式依赖会话的 `NLS_DATE_LANGUAGE` 参数。若需确保英文星期,可先执行: ```sql ALTER SESSION SET NLS_DATE_LANGUAGE = AMERICAN; ``` 2. **补零控制**: - 使用 `MM`/`DD` 会自动补零(如 `07`),若需不补零,需通过字符串处理或自定义逻辑实现。 3. **性能优化**: - 频繁调用时,自定义函数比重复 `CASE WHEN` 更高效。 --- ### **示例截图(模拟结果)** | SQL查询 | 结果 | |---------|------| | `SELECT TO_CHAR(DATE '2025-07-03', 'YYYY"年"MM"月"DD"日"') || ' ' || CASE TO_CHAR(DATE '2025-07-03', 'DAY') WHEN 'THURSDAY' THEN '星期四' END FROM dual;` | 2025年07月03日 星期四 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值