我有一个WHERE子句,我试图从ORACLE SQL转换为Impala SQL。 col2输出看起来像201406.我需要让Impala可读,然后将其格式化然后将其转换为字符串。任何帮助将不胜感激!
WHERE Table1.col2 <= to_char( SYSDATE-7, 'YYYYMM')
答案 0 :(得分:2)
current_timestamp()是now()的别名,因此可以使用其中任何一个而不是sysdate
SYSDATE-7是sysdate减去7天,因此相当于WHERE Table1.col2 <= to_char( SYSDATE-7, 'YYYYMM')
WHERE Table1.col2 <= concat( cast(year(to_date( days_add(current_timestamp(),-7 ))) as string), cast(month(to_date( days_add(current_timestamp(),-7 ) )) )
或者扣除时间为7个月:
concat( cast(year(to_date( months_add(current_timestamp(),-7 ))) as string), cast(month(to_date( months_add(current_timestamp(),-7 ) )) )
请注意,所有未经测试的,我使用了days_add()或months_add(),因为许多人更喜欢使用减7而不是带有正数7的days_sub()。但是我假设这将起作用(这适用于具有类似日期算术功能的MySQL。
另请注意,您的字段Table1.col2是字符串类型,如果它是整数,则需要稍微不同的解决方案。
year( months_add(current_timestamp(),-7 ) ) * 100 + month(days_add(current_timestamp(),-7 ))
year( months_add(current_timestamp(),-7 ) ) * 100 + month(months_add(current_timestamp(),-7 ))
答案 1 :(得分:-1)
使用以下语法:
@page