[英]How to run a query for every date for last 3 month
我在redshift中有一個表(pkg_date)。 我想獲取過去3個月中每個日期的一些數據。
這是我的查詢
select * from pkg_data where scan_date < current_date;
如何在查詢本身中使用current_date作為變量,並在4月1日之后的每個日期運行此查詢。
我設置了一個cron作業,它將每小時運行一次。 每小時應以不同的current_date運行
使用dateadd()獲取3月前的日期,並使用GETDATE()獲取當前日期。
即代碼將看起來像。
select * from pkg_data where scan_date < dateadd(month,-3,GETDATE());
有關cron的信息,請參閱如何在Amazon Redshift上執行計划的SQL腳本?
SELECT *
FROM pkg_data
WHERE scan_date > CURRENT_DATE - INTERVAL '3 months'
請注意-Redshift在UTC上有效,因此CURRENT_DATE可能會受到時區的影響,有時可能會+/-您所期望的。
SELECT
CURRENT_DATE,
(CURRENT_DATE - INTERVAL '3 months')::date
返回值:
2018-06-21 2018-03-21
還要小心長短幾個月的時間!
SELECT DATE '2018-05-31' - INTERVAL '3 months'
返回:
2018-02-28 00:00:00
請注意,它給出了該月的最后一天(31日對28日)。
順便說一句,您可以使用DATE '2018-05-31'
或'2018-05-31'::DATE
以及INTERVAL '3 months'
或'3 months'::INTERVAL
來轉換類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.