Oracle中如何将日期转为DATE类型的MM-DD-YYYY HH24:MI:SS格式
关于Oracle DATE类型格式转换的问题解答
- Oracle的DATE类型是内部二进制存储结构,本身不存在「格式」属性,你看到的所有日期样式都是DATE类型转换为字符串后的展示结果
- 你需求里提到的「格式为MM-DD-YYYY HH24:MI:SS的DATE类型日期」,本质是要DATE类型的字段在展示时按照上述格式输出,不需要对字段本身做额外的存储层面转换操作
实现方案
方案1:临时修改当前会话的日期展示格式(适用调试、单次查询场景)
执行如下SQL修改当前会话的默认日期转换格式:
ALTER SESSION SET NLS_DATE_FORMAT = 'MM-DD-YYYY HH24:MI:SS';
修改完成后直接查询原DATE字段即可:
SELECT UPDATED_DT FROM COMPANY;
此时查询返回的UPDATED_DT依然是标准DATE类型,支持所有日期运算、排序操作,展示效果就是你需要的03-28-2018 21:11:34格式。
方案2:报表工具层面固定日期格式(适用报表开发场景)
如果是在报表项目中使用,不需要修改数据库会话参数,直接在报表工具的字段格式配置里,把日期类型字段的展示格式设置为MM-DD-YYYY HH24:MI:SS即可,所有主流报表工具都支持日期字段的自定义展示格式配置。
冗余操作说明
你之前查询语句里的TO_DATE(to_CHAR(UPDATED_DT,'MM-DD-YYYY HH24:MI:SS'),'MM-DD-YYYY HH24:MI:SS')属于无效冗余操作,不会改变DATE类型的存储值,只会额外消耗计算性能,实际使用中不需要写这类转换逻辑。
内容的提问来源于stack exchange,提问作者TA01
相关产品推荐
相关产品推荐

