2

ORACLE SQL から Impala SQL に変換しようとしている WHERE 句があります。col2 の出力は 201406 のようになります。これを Impala で読み取れるようにしてから、フォーマットしてから文字列に変換する必要があります。どんな助けでも大歓迎です!

WHERE Table1.col2 <= to_char( SYSDATE-7, 'YYYYMM')
4

2 に答える 2

3

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 ) )) )

すべてテストされていないことに注意してください。また、多くの人が正の 7 で days_sub() の代わりに負の 7 を使用することを好むため、days_add() または months_add() を使用しました。ただし、これが機能すると仮定しています (これは 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 ))
于 2014-07-07T07:29:07.150 に答える