如何 select 最近 7 天的结果来自 mysql(使用自定义数据字段)?
How to select last 7 days results from mysql (with custom data field)?
我需要 select 来自 mysql 的过去 7 天的数据。我有一个名为 'date' 的字段,其值采用 mm.dd.yy 格式。
所以我试图找到特殊的 mysql 请求来做到这一点,但它不适用于我的领域,我猜是因为日期格式错误。
我如何从 php(使用一些变量获取 mysql 条目)或使用自定义 select 查询来做到这一点?
首先阅读您的 table 并更改日期格式
$new_date_format = date('Ymd',mktime(0,0,0,substr($date,0,2),substr($date,3,2),substr($date,6,2)));
之后可以进行比较
您可以将 STR_TO_DATE()
to convert your idiosyncratic 日期格式用于标准 DATE
值。像这样的表达式就可以了
STR_TO_DATE('07.17.97', '%m.%d.%y')
那你可以说
WHERE STR_TO_DATE(`date`, '%m.%d.%y') >= CURDATE() - INTERVAL 7 DAY
在您的查询中过滤具有 date
个值的项目,从一周前开始。
但是,如果要过滤的行很多,性能会很差:这种 WHERE 子句不是 sargable。
我需要 select 来自 mysql 的过去 7 天的数据。我有一个名为 'date' 的字段,其值采用 mm.dd.yy 格式。 所以我试图找到特殊的 mysql 请求来做到这一点,但它不适用于我的领域,我猜是因为日期格式错误。 我如何从 php(使用一些变量获取 mysql 条目)或使用自定义 select 查询来做到这一点?
首先阅读您的 table 并更改日期格式
$new_date_format = date('Ymd',mktime(0,0,0,substr($date,0,2),substr($date,3,2),substr($date,6,2)));
之后可以进行比较
您可以将 STR_TO_DATE()
to convert your idiosyncratic 日期格式用于标准 DATE
值。像这样的表达式就可以了
STR_TO_DATE('07.17.97', '%m.%d.%y')
那你可以说
WHERE STR_TO_DATE(`date`, '%m.%d.%y') >= CURDATE() - INTERVAL 7 DAY
在您的查询中过滤具有 date
个值的项目,从一周前开始。
但是,如果要过滤的行很多,性能会很差:这种 WHERE 子句不是 sargable。