2016-04-26 128 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)