2015-04-05 43 views
-1

我有一個DATE表的字段(也是類型)。我如何編寫一個查詢來獲得一個月的時間間隔是這樣的:如何從表中逐月獲取間隔?

start  end 
2015-01-01 2015-01-31 
2015-02-01 2015-02-28 
2015-03-01 2015-03-31 
     and so on .. 

什麼樣的SQL的功能,我會用它來得到這個結果? 我使用Postgres數據庫。

一個查詢創建在那裏我存儲我的數據表:

CREATE TABLE "DEPOSIT_EVENT" (
    id bigint NOT NULL, 
    amount numeric(19,2), 
    date timestamp without time zone, 
    description character varying(255), 
    eventtype character varying(255), 
    processingdate timestamp without time zone, 
    status boolean, 
    view boolean, 
    deposit_id bigint, 
    CONSTRAINT "DEPOSIT_EVENT_pkey" PRIMARY KEY (id), 
    CONSTRAINT fk_dp0pc33hchopclsau0uknefgr FOREIGN KEY (deposit_id) 
     REFERENCES "DEPOSITS" (id) MATCH SIMPLE 
     ON UPDATE NO ACTION ON DELETE NO ACTION 
); 

我想只需要一個月的時間間隔,如我上面描述。

比如我有幾行:

id amount date 
1  100  2014-01-01 08:39:51.774 
2  31  2014-01-10 08:39:51.774 
3  2  2014-01-21 08:39:51.774 
4  22  2014-02-04 08:39:51.774 
5  74  2014-03-14 08:39:51.774 

,並從中我想包含一個或多個項目這樣才一個月期:

  column 
2014-01-01 - 2014-01-30 
2014-02-01 - 2014-02-28 
2014-03-01 - 2014-03-31 
+2

你還沒有提供足夠的信息給我們給你確切的答案,也許這個問題解決你的問題:[在PostgreSQL中的兩個日期之間獲得結果](http://stackoverflow.com/questions/10170544/getting - 結果之間,兩日合PostgreSQL系統)。 – jfun 2015-04-05 19:25:19

回答

0

下面應該工作:

SELECT 
    date_trunc('MONTH', date) as start_date, 
    date_trunc('MONTH', date) + INTERVAL '1 MONTH - 1 day' as end_Date, 
    COUNT(id) AS recordcount 
FROM DEPOSIT_EVENT 
GROUP BY 1,2 

這得到每個日期的月份和月底的開始,然後做一個這兩個上的。我在第三個字段recordcount中添加,只是爲了表明您可以在同一查詢中獲得該時間段內的記錄數。

相關問題