我只需要选择日期字段是昨天日期的数据。我遇到的唯一问题是日期字段中的数据看起来像下面这样20160412 062815.000只有选择昨天日期奇怪的日期格式
我并不在乎时间,我只是想动态地搜索昨天的日期。我试过了很多CURDATE()-1,但我不确定如何只搜索字段的前8位数字。
我只需要选择日期字段是昨天日期的数据。我遇到的唯一问题是日期字段中的数据看起来像下面这样20160412 062815.000只有选择昨天日期奇怪的日期格式
我并不在乎时间,我只是想动态地搜索昨天的日期。我试过了很多CURDATE()-1,但我不确定如何只搜索字段的前8位数字。
假定日期值存储为一个字符串,而前8个字符总是在YYYYMMDD
格式的日期,那么你可以使用这样的查询:
select *
from your_table
where your_column like concat(date_format(current_date() - interval 1 day,'%Y%m%d'),'%')
此查询的一个优点是它可以利用日期字段上的索引,与迄今为止的其他答案不同。
将昨天的日期格式化为数字并将日期字符串转换为数字。
select * from your_table
where date_format(curdate() - interval 1 day, '%Y%m%d') * 1 = date_col * 1
*1
是强制MySQL字符串转换为数字的数学运算。
非常感谢,像梦一样工作。谢谢@scaisEdge和Ike Walker的建议。 –
可以使用subdate(currentDate, 1)
select * from your_table
where subdate(currentDate, 1) = DATE(your_date)
dataype是varchar? – trincot