仅使用奇怪的日期格式选择昨天的日期

时间:2016-04-26 19:10:58

标签: mysql date

我只需要选择日期字段为昨天日期的数据。我遇到的唯一问题是日期字段中的数据如下所示20160412 062815.000

我真的不关心时间,我只想动态搜索昨天的日期。我尝试过多次CURDATE()-1,但我不确定如何只搜索该字段的前8位数。

3 个答案:

答案 0 :(得分:0)

将昨天的日期格式化为数字,并将日期字符串也转换为数字。

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

SQLFiddle demo

*1是一个数学运算,它强制MySQL将字符串转换为数字。

答案 1 :(得分:0)

您可以使用subdate(currentDate, 1)

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

答案 2 :(得分:0)

假设日期值存储为字符串,前8个字符始终是YYYYMMDD格式的日期,那么您可以使用如下查询:

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

此查询的一个优点是它可以利用日期字段中的索引,与目前为止的其他答案不同。