2017-05-27 70 views
0

我與MySQL有關的一個問題:計數例日期在MySQL

我有一個名爲「datelist」表中列出的所有從2011年的日期到2017年,我得到了另一個表「sqltest語句」有兩列「start_date」和「end_date」,顯示使用日期信息的產品活動。這兩列是日期時間類型變量,例如:2016-02-17 21:52:26.594847。

而且我想算多少案件是從2011年每個日期積極利用到2017年

而且我在mysql中是新的,並可能有人指導我如何處理這樣的問題?

感謝!

+0

你已經嘗試?我們可以得到一些示例數據和預期輸出嗎? –

+0

@SebastianBrosch我自己的想法是,要一天一天地在start_date和end_date之間選擇案例。 –

+0

@SebastianBrosch我希望預期的輸出成爲一個表,其中列出了從2011年到2017年(所有日期)的活動用例數 –

回答

1

沒有您的數據,我們必須從簡要問題中提供的線索猜測。我們知道有2個表和2個列名被提及,但第二個表中的列名是未知的。這個問題所暗示的時間精度有所不同,但這並未通過樣本數據進行驗證。

我想提及時間精度的原因是爲了在查詢中進行一些補償以確保記錄每天活動的任何測試。如該日期2016年2月17日在2016年2月17日記錄測試開始21:52:26.594847

的樣本數據:

CREATE TABLE sqltest 
    (`start_date` datetime, `end_date` datetime) 
; 

INSERT INTO sqltest 
    (`start_date`, `end_date`) 
VALUES 
    ('2016-02-17 21:52:26', '2016-02-27 21:52:26') 
; 


CREATE TABLE datelist 
    (`a_date` datetime) 
; 

INSERT INTO datelist 
    (`a_date`) 
VALUES 
    ('2016-02-01 00:00:00'), 
    ('2016-02-02 00:00:00'), 
    ('2016-02-03 00:00:00'), 
    ('2016-02-04 00:00:00'), 
    ('2016-02-05 00:00:00'), 
    ('2016-02-06 00:00:00'), 
    ('2016-02-07 00:00:00'), 
    ('2016-02-08 00:00:00'), 
    ('2016-02-09 00:00:00'), 
    ('2016-02-10 00:00:00'), 
    ('2016-02-11 00:00:00'), 
    ('2016-02-12 00:00:00'), 
    ('2016-02-13 00:00:00'), 
    ('2016-02-14 00:00:00'), 
    ('2016-02-15 00:00:00'), 
    ('2016-02-16 00:00:00'), 
    ('2016-02-17 00:00:00'), 
    ('2016-02-18 00:00:00'), 
    ('2016-02-19 00:00:00'), 
    ('2016-02-20 00:00:00'), 
    ('2016-02-21 00:00:00'), 
    ('2016-02-22 00:00:00'), 
    ('2016-02-23 00:00:00'), 
    ('2016-02-24 00:00:00'), 
    ('2016-02-25 00:00:00'), 
    ('2016-02-26 00:00:00'), 
    ('2016-02-27 00:00:00'), 
    ('2016-02-28 00:00:00'), 
    ('2016-02-29 00:00:00') 
; 

示例查詢

select 
     d.a_date 
    , count(t.start_date) 
from datelist d 
left join sqltest t on d.a_date between DATE_SUB(t.start_date,INTERVAL 1 DAY) and t.end_date 
group by 
     d.a_date 
;