您如何选择本月8日至上个月8日之间的所有记录,而无需传递当前月份?我的日期列是日期类型。

SELECT *
FROM table
WHERE date BETWEEN '8th of last month' AND
                   '8th of this month'


我试过用PHP计算日期计算,然后将其发送到MySQL。但是,考虑到因素,它变得有点复杂。我想知道是否可以用SQL代替?

最佳答案

从将relative timestrtotime()结合使用的可读性的角度来看,使用PHP可能更直接。

以下内容将帮助您入门:

echo date('Y-m-d', strtotime('eighth of last month'));


更新

普通人不能像我上面想的那样工作。但是,假设您使用每月的同一天(即8日)。很好:

echo date('Y-m-08', strtotime('last month'));

10-07 23:28