2015-04-29 82 views
0

也許任何人都可以用這個查詢來幫助我。我只想選擇兩個日期之間的所有行,但我遇到了日期格式問題。在兩個日期之間進行選擇dateformat

我的查詢:

SELECT id, number, date 
FROM `table` 
WHERE (STR_TO_DATE(date, '%j-%n-%Y') between '6-4-2015' AND '6-4-2016') 

我不知道這有什麼錯此查詢。我試過使用STR_TO_DATEDATE

日期的datetype是文本(我想喜歡保持它)

這裏的數據庫的一個例子:

1  233  5-4-2015 
2  238  6-4-2015 
3  431  7-4-2015 
4  230  8-4-2015 

任何人可以幫助我嗎?

+0

什麼是原來的格式? – Ventura

+1

顯示一些示例數據和'date'的數據類型是什麼 –

回答

1

你做錯了日期轉換在str_to_date,貌似日期是d-m-Y格式和你正在做的是

mysql> select STR_TO_DATE('5-4-2015', '%j-%n-%Y') ; 
+-------------------------------------+ 
| STR_TO_DATE('5-4-2015', '%j-%n-%Y') | 
+-------------------------------------+ 
| NULL        | 
+-------------------------------------+ 

因此,它給你空和商店在那裏結束。

您應該使用

mysql> select STR_TO_DATE('5-4-2015', '%d-%m-%Y') ; 
+-------------------------------------+ 
| STR_TO_DATE('5-4-2015', '%d-%m-%Y') | 
+-------------------------------------+ 
| 2015-04-05       | 
+-------------------------------------+ 
1 row in set (0.00 sec) 

現在比較應儘可能

WHERE 
STR_TO_DATE(date, '%d-%m-%Y') 
between 
STR_TO_DATE('6-4-2015','%d-%m-%Y') AND STR_TO_DATE('6-4-2015','%d-%m-%Y') 
+0

非常感謝!這對我有用! – josser1995

1

普萊舍試試這個的strtotime功能

'.date("d-m-Y", strtotime($r['date'])).' 

對於實例

"select * from sales3 where (sdate between '.date("d-m-Y", strtotime($r['date1'])).' and '.date("d-m-Y", strtotime($r['date2'])).')" 
相關問題