Oracle SQL Developer中如何按指定格式显示DATE类型列?
解决Oracle中DATE类型列的显示格式问题
问题根源
Oracle的DATE类型是同时存储日期和时间的完整类型,没有单独的“日期型”或“时间型”。当你用TO_DATE('10:45', 'hh24:mi')插入时间时,Oracle会自动补上一个默认日期(通常是当年1月1日,或者会话的默认日期值),这就是你查询时看到额外日期的原因。
解决方案:显式指定列并格式化
不能直接用SELECT *实现需求,必须显式列出所有列,对需要自定义格式的列用TO_CHAR()转换,其他列直接保留原列名即可。
假设你的表除了FlightDate、DepartureTime、ArrivalTime,还有FlightNo、Airline等列,查询语句可以这么写:
SELECT FlightNo, Airline, TO_CHAR(FlightDate, 'DD/MM/YYYY') AS FlightDate, TO_CHAR(DepartureTime, 'HH24:MI') AS DepartureTime, TO_CHAR(ArrivalTime, 'HH24:MI') AS ArrivalTime FROM FLIGHT;
这样既输出了所有列,又让FlightDate只显示日期,DepartureTime和ArrivalTime只显示时间。
偷懒小技巧:创建视图
如果不想每次写长查询,可以创建一个视图封装格式化逻辑:
CREATE VIEW FLIGHT_FORMATTED AS SELECT -- 列出所有原始列,对需要格式化的字段做转换 FlightNo, Airline, TO_CHAR(FlightDate, 'DD/MM/YYYY') AS FlightDate, TO_CHAR(DepartureTime, 'HH24:MI') AS DepartureTime, TO_CHAR(ArrivalTime, 'HH24:MI') AS ArrivalTime FROM FLIGHT;
之后直接查询视图就能得到格式化后的结果:
SELECT * FROM FLIGHT_FORMATTED;
内容的提问来源于stack exchange,提问作者Vonec
相关产品推荐
相关产品推荐

