有没有办法根据条件更改日期列输出的格式?
例如,我有一个表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
的错误?
答案 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结束;