2016-04-26 178 views
0

我只需要選擇日期字段是昨天日期的數據。我遇到的唯一問題是日期字段中的數據看起來像下面這樣20160412 062815.000只有選擇昨天日期奇怪的日期格式

我並不在乎時間,我只是想動態地搜索昨天的日期。我試過了很多CURDATE()-1,但我不確定如何只搜索字段的前8位數字。

+0

dataype是varchar? – trincot

回答

0

假定日期值存儲爲一個字符串,而前8個字符總是在YYYYMMDD格式的日期,那麼你可以使用這樣的查詢:

select * 
from your_table 
where your_column like concat(date_format(current_date() - interval 1 day,'%Y%m%d'),'%') 

此查詢的一個優點是它可以利用日期字段上的索引,與迄今爲止的其他答案不同。

0

將昨天的日期格式化爲數字並將日期字符串轉換爲數字。

select * from your_table 
where date_format(curdate() - interval 1 day, '%Y%m%d') * 1 = date_col * 1 

SQLFiddle demo

*1是強制MySQL字符串轉換爲數字的數學運算。

+0

非常感謝,像夢一樣工作。謝謝@scaisEdge和Ike Walker的建議。 –

0

可以使用subdate(currentDate, 1)

select * from your_table 
where subdate(currentDate, 1) = DATE(your_date)