簡體   English   中英

如何對最近3個月的每個日期運行查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM