2012-06-01 39 views
1

我想顯示給定日期之間的所有數據。日期沒有數據發現,我要爲所有列使用用戶變量顯示mysql中日期之間的數據

表模式顯示空

TimeEntry(id: integer, project_id: integer, user_id: integer, hours: float, comments: string, spent_on: date) 

是我的嘗試,到目前爲止,

set @num = -1; 
SELECT DATE_ADD( '2009-01-01', INTERVAL @num := @num +1 
DAY) AS date_sequence, time_entries.id 
FROM time_entries 
WHERE user_id =55 
HAVING DATE_ADD( '2009-01-01', INTERVAL @num DAY) <= '2012-01-01' 

它提供了以下輸出

date_sequence id 
2009-01-01 46 
2009-01-02 50 
2009-01-03 55 
2009-01-04 01 
2009-01-05 02 
2009-01-06 24 
2009-01-07 57 
2009-01-08 59 
2009-01-09 74 
2009-01-10 78 

預計產量爲

date_sequence id 
2009-01-01 NULL 
2009-01-02 NULL 
2009-01-03 NULL 
2009-01-04 NULL 
2009-01-05 NULL 
2009-01-06 NULL 
2009-01-07 NULL 
2009-01-08 NULL 
2009-01-09 74 
2009-01-10 78 

因爲ID只存在於09和10

如何匹配與其他領域的日期?

提示/意見?

基於Rails的解決方案也是有用的。

編輯:

我在軌試圖到目前爲止

def create_dates(from_time,till_time) 
    dates = [] 
    date_from = from_time.to_time 
    while date_from <= till_time.to_time && periods.length <= 100   
     dates << "#{date_from.to_date}" 
     date_from = date_from + 1.day 
    end 
dates 

它返回我一定時期內之間的日期。但我不能去與這些日期

回答

1

試試這符合我的數據:

set @num = -1; 
select t1.date_sequence, count(t2.id) from 
(SELECT DATE_ADD( '2009-01-01', INTERVAL @num := @num +1 DAY) AS date_sequence 
    FROM time_entries HAVING DATE_ADD( '2009-01-01', INTERVAL @num + 1 DAY) <= '2012-01-01') as t1 
left outer join time_entries as t2 on t1.date_sequence = t2.spent_on 
group by t1.date_sequence 
order by t1.date_sequence; 
+0

日Thnx。我得到了我想念的東西。我需要創建一個日期視圖,然後將它與time_entries表連接起來。 (a)我在sql查詢中使用user_variables,(b)使用查找表(保存日期),或者我使用普通查詢填充rails側的日期。 –

+0

是的。我會試一試。 –

+0

sql查詢中的user_variables應該是最快的。我正在投票你的問題。謝謝。祝你好運。 – Anil

相關問題