2016-02-04 63 views
0

我有一個星期的專欄號碼爲w0, w1, w2...。我試圖獲得最後六個星期的數據。這裏是我正在使用的SQL查詢。SQL Query在兩週之間獲取數據?

SELECT * FROM week 
WHERE uid = '9df984da-4318-1035-9589-493e89385fad'  
    AND report_week BETWEEN `'w52' AND 'w5'`; 

'w52'基本上是第52周時爲2015年12 'w5'是2016年一月的'between'似乎不起作用。從上述兩週獲取數據的最佳方式是什麼?

這裏的CREATE TABLE語句:

CREATE TABLE `week` (`uid` VARCHAR(255) DEFAULT '' NOT NULL, 
        `report_week` VARCHAR(7) NOT NULL, 
        `report_files_active` BIGINT DEFAULT NULL); 

本質上講,這臺正從具有日期列其它表填充。它使用來自其他表格的日期並將每週數據彙總到此表格中。

任何幫助表示讚賞。

+0

你不是存儲在表中的時間戳值? – 1000111

+1

顯示你的表格結構。附上你的表的create table語句。 – 1000111

+0

之間是要取代「大於等於小於等於」的組合,但您的條件恰好相反。你是否在表格中存儲日期? –

回答

1

請參閱此SO Discussion,其中詳細說明了與您的問題類似的原因。

BETWEEN 'a' and 'b'實際匹配columnValue >='a' and columnValue <= 'b'

在你的情況W52大於W5由於字符串的字典序 - 這意味着BETWEEN子句將不會返回一個真正的(想想等同於說BETWEEN 10 and 1代替BETWEEN 1 and 10

編輯我的反應:

副歌從存儲一週v作爲一個字符串。相反,這裏有幾種方法按照他們的偏好排序:

  1. 有一個時間戳列。你可以很容易地使用MySQL查詢 設施來提取這周的信息。對於 參考,請參閱this後。
  2. 保持兩列 - YEAR, WEEKNO其中YEAR將存儲值 像2015年2016等,並WEEKNO將存儲的週數。 通過這種方式,您可以查詢任何一年中任何一週的數據。
0

請告訴我的表結構和數據庫名稱,因爲它的不同,如果是任何時間戳那麼我們就可以利用之間'systemdate' AND 'systemdate-6'

相關問題