2013-02-18 73 views
1

我有以下的where子句查詢前幾個月返回行太

AND DATE_FORMAT(l.created_on, "%d/%m/%Y") BETWEEN '06/02/2013' AND '07/02/2013' 

其中created_on是時間戳。

由於某種原因,查詢現在還返回前幾個月的行。有誰知道爲什麼?

注:

我需要的日期是在特定的格式

回答

0

如果created_on已經是(數據類型),

,你可以直接使用查詢它的日期,

WHERE created_on BETWEEN '2013-02-06' AND '2013-02-07' 

但如果日期是字符串,請使用STR_TO_DATE

WHERE STR_TO_DATE(l.created_on, '%d-%m-%Y') BETWEEN '2013-02-06' AND '2013-02-07' 

更新1

,因爲你不想改變你輸入的日期的格式,那麼你就需要使用STR_TO_DATE

進行格式化
WHERE l.created_on BETWEEN STR_TO_DATE('06/02/2013','%d/%m/%Y') AND 
          STR_TO_DATE('07/02/2013','%d/%m/%Y') 
+0

這是時間戳。如果我這樣做,我沒有得到任何結果。 – 2013-02-18 08:10:49

+0

當有結果時,第二個選項也不會返回結果。 – 2013-02-18 08:12:34

+0

好吧,如果是這樣的話,那麼你應該轉換值,而不是列,例如'WHERE l.created_on BETWEEN STR_TO_DATE('06/02/2013','%d /%m /%Y')AND STR_TO_DATE '07/02/2013','%d /%m /%Y')' – 2013-02-18 08:13:47

1

Mysql字符串日期格式遵循模式yyyy-mm-dd。如果您有時間戳,請不要轉換爲日期,只需比較時間戳即可。

WHERE l.created_on 
BETWEEN UNIX_TIMESTAMP('2012/02/06') AND UNIX_TIMESTAMP('2013/02/07') 
+1

+1在你的謂詞中,'l.created_on'仍然是可靠的。 – 2013-02-18 08:13:05

+0

你們都在改變我的約會!我使用的是特定的格式,不能改變它,如果我用我的格式嘗試你的代碼,我沒有得到任何結果。 – 2013-02-18 08:14:45

+0

@ eric.itzhak您的意思是?沒有改變。什麼具體格式? – 2013-02-18 08:17:58