两个日期之间的Teradata最小值
嗨,我对teradata比较陌生。我有一行有两个日期。我需要得到这两个日期之间的最小值,并显示为第三个日期。日期为YYYYMMDD格式。这是所有的可能性 示例表两个日期之间的Teradata最小值,teradata,Teradata,嗨,我对teradata比较陌生。我有一行有两个日期。我需要得到这两个日期之间的最小值,并显示为第三个日期。日期为YYYYMMDD格式。这是所有的可能性 示例表 col1--date1--date2 123--20140802--20140619 124--20140802--0 124--0--20140802 125--0--0 我需要将我的结果设置为 col1--date1--date2--min\u日期 123--20140802--20140619--2014年6月19日 124--2
- col1--date1--date2
- 123--20140802--20140619
- 124--20140802--0
- 124--0--20140802
- 125--0--0
- col1--date1--date2--min\u日期
- 123--20140802--20140619--2014年6月19日
- 124--20140802--0--2014年8月2日(非零为最短日期)
- 124--0--20140802--2014年8月2日(非零为最短日期)
- 125--0--0--?
select col1, date1, date2,
case
when date1 <> 0 and date2 = 0 then cast((date1 - 19000000) as date)
when date1 = 0 and date2 <> 0 then cast((date2 - 19000000) as date)
when date1 = 0 and date2 = 0 then cast(null as date)
when date1 > date2
then
cast((date2 - 19000000) as date)
else
cast((date1 - 19000000) as date)
end as min_date
非常感谢您的帮助。
提前感谢。案件可简化为
CAST(CASE
WHEN date1 = 0 AND date2 = 0 THEN NULL
WHEN date1 > date2 THEN date1
ELSE date2
END - 19000000 AS DATE) AS min_date
格式化日期:
min_date (FORMAT 'mmm,byyyy') (CHAR(9))
如果你拿出那个大的case语句,你的查询是如何形成的?没有case语句,查询速度非常快。谢谢。我会试试这个。
min_date (FORMAT 'mmm,byyyy') (CHAR(9))