我有一个where子句,我正试图从oraclesql转换成impalasql。col2的输出类似于201406。我需要有这个 Impala 可读,然后格式化它,然后把它变成一个字符串。任何帮助都将不胜感激!
WHERE Table1.col2 <= to_char( SYSDATE-7, 'YYYYMM')
t1rydlwq1#
current\u timestamp()是now()的别名,因此可以使用其中任何一个来代替sysdatesysdate-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\u add()或months\u add(),因为许多人喜欢使用-7而不是days\u sub()和正7。不过,我假设这是可行的(这在mysql中工作,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 ))
fzwojiic2#
使用以下语法:
select from_unixtime(unix_timestamp(now()), 'yyyy-MM-dd')
2条答案
按热度按时间t1rydlwq1#
current\u timestamp()是now()的别名,因此可以使用其中任何一个来代替sysdate
sysdate-7是sysdate减去7天,因此
WHERE Table1.col2 <= to_char( SYSDATE-7, 'YYYYMM')
是如果扣减期为7个月,则:
请注意,所有这些都未经测试,我使用了days\u add()或months\u add(),因为许多人喜欢使用-7而不是days\u sub()和正7。不过,我假设这是可行的(这在mysql中工作,mysql具有类似的日期算术函数)。
另请注意,这意味着您的字段table1.col2是字符串类型,如果它是整数,则需要稍微不同的解决方案。
fzwojiic2#
使用以下语法: