Oracle条件格式的Date列

时间:2013-12-16 10:56:12

标签: oracle

有没有办法根据条件更改日期列输出的格式?

例如,我有一个表TEST,其中包含1个test_date(DATE类型)列,其中包含两个值--20.03.2013和NULL。 我想进行如下查询:

Select

CASE when test_date is NULL then 'NA' ELSE test_date end from TEST;

但我收到类似inconsistent char and date formats的错误?

3 个答案:

答案 0 :(得分:0)

是的。

但是对于你的情况,你应该在你的案例陈述上格式化你的日期,如下所示:

Select 
   CASE when test_date is NULL then 'NA' 
        ELSE to_char(test_date, 'dd.mm.yyyy') end as date 
  from TEST

修改 正如您在评论中所说,如果输出格式不为空,则需要将输出格式设为日期。您无法执行此操作。由于case语句的输出应该与WHEN部分的类型相同。

@MaheswaranRavisankar的评论指出了你的最佳选择。您必须使用特定日期格式作为Excel工作表,例如,如果在工作表中日期格式为DD / MM / YYYY,则应将此格式放在to_char函数上,以便excel将自动将此数据转换为日期(如果列为形成日期。

答案 1 :(得分:0)

WHEN语句的所有CASE部分必须返回相同的数据类型。

因此,如果您还希望显示值NA,则需要将日期更改为字符串:

case 
   when test_date is null then 'NA'
   else to_char(test_date, 'dd.mm.yyyy')
end

答案 2 :(得分:0)

对我来说,查询你所问的......

如果您仍然遇到问题,可以使用TO_CHAR()函数

ex:CASE,当test_date为NULL,然后'NA'ELSE TO_CHAR(test_date,'MM / DD / YYYY')从TEST结束;