我有一个 WHERE 子句,我正在尝试将 ORACLE SQL 转换为 Impala SQL。col2 输出看起来像 201406。我需要让 Impala 可读,然后对其进行格式化,然后将其转换为字符串。任何帮助将非常感激!
WHERE Table1.col2 <= to_char( SYSDATE-7, 'YYYYMM')
current_timestamp() 是 now() 的别名,因此可以使用其中任何一个来代替 sysdate
WHERE Table1.col2 <= to_char( SYSDATE-7, 'YYYYMM')
SYSDATE-7 是 sysdate 减去 7 天,所以相当于
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 ))
使用以下语法:
select from_unixtime(unix_timestamp(now()), 'yyyy-MM-dd')