【发布时间】:2018-07-12 17:41:20
【问题描述】:
我有 5 列日期(col1、col2、col3、col4、col5),其中一些是空的或带有 null。 我需要从所有这些列中找到一个最小日期。
我正在使用“最少”功能,它工作正常,但如果我有一列有日期而其他列是空的,“最少”将返回给我空字段!
如何跳过空字段或空列,只返回日期!或者我需要在使用最少功能之前检查每一列是否为空! 谢谢!
select id, least(vi_date1, vi_date2,vi_date3,vi_date4,vi_date5) as "Min Date", vi_date1, vi_date2,vi_date3,vi_date4,vi_date5 from table
【问题讨论】:
-
LEAST不能直接用于具有NULL值的表。因为当列值为NULL时LEAST返回NULL -
好的,我明白了,空列呢!??我可以将所有 null 替换为空!
-
我会将空值和 NULL 值转换为日期格式
9999-12-31,类似于IF(vi_date1 = '' OR vi_date1 IS NULL, '9999-12-31', vi_date1) -
感谢您的回答,但我的任务是在所有 5 个日期列中找到最大值和最小值,对于最大结果,它将不起作用!
-
定义“空”。那些日期/日期时间列还是 varchars?