2017-01-05 89 views
-3

試圖創建一個列會告訴我的WEEKOFYEAR(最後一天)列以及日期:使用SQL創建,顯示一週的第一天,一週

Week Date      org cost 
-------------------------------------------- 
50 "2016/12/12-2016/12/18" 1  400 
51 "2016/12/19-2016/12/25" 1  400 
52 "2016/12/26"    1  400 

所以這告訴我認爲第52周只包括12月26日的數據,而不是整個星期的數據。

這裏是我的查詢看起來像:

SELECT 
    weekofyear(date) as week_number, 
    exchange, 
    country, 
    channel, 
    sum (media_cost) as mc 
FROM 
    imps 
WHERE 
    date BETWEEN '2016-12-26' AND '2017-01-08' 
GROUP BY 
    weekofyear(date) as week_number, 
    exchange, 
    country, 
    channel; 

我已經看過How do you get the 「week start date」 and 「week end date」 from week number in SQL Server?但這不會解決看到的天它不包括的問題。 會使用垃圾箱工作嗎?你有什麼建議。

+3

很難理解一個信息很少的問題。請提供一些示例數據以及您希望爲該示例獲得的結果。 – Mureinik

+1

請參閱http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-查詢 – Strawberry

+0

真的不知道你在問什麼,但是PHP中的strtotime函數可以把一個星期的數字轉換成這樣的日期:'date(「Ymd」,strtotime(「2017W01」));'。這會給你2017年第一週的第一次約會。 – CptMisery

回答

0

在您的查詢中,該WHERE將不起作用,因爲字符串「2016/12/12-2016/12/18」永遠不會在兩個日期之間。您需要創建兩個日期列,如week_beginweek_end。那麼你的WHERE可能是:

WHERE week_begin BETWEEN '2016-12-26' AND '2017-01-08' 
    OR week_end BETWEEN '2016-12-26' AND '2017-01-08'