您如何选择本月8日至上个月8日之间的所有记录而不通过当月?我的日期列是日期类型。
SELECT *
FROM table
WHERE date BETWEEN '8th of last month' AND
'8th of this month'
我已经尝试在PHP中计算日期计算,然后将它们发送到MySQL。但考虑到多年,它会变得有点复杂。我想知道这是否可以用SQL来完成?
答案 0 :(得分:2)
使用relative time和strtotime()
,从可读性的角度来看,使用PHP可能更直接 。
以下内容可以帮助您入门:
echo date('Y-m-d', strtotime('eighth of last month'));
普通不像我上面想象的那样工作。但是,假设您使用的是当月的同一天(即第8天)。以下情况很好:
echo date('Y-m-08', strtotime('last month'));
答案 1 :(得分:2)
这是一个解决方案
echo date('Y-m-d', mktime(0, 0, 0, date('n') - 1, 8));
如果你想使用strtotime
echo date('Y-m-d', strtotime('+7 days', strtotime('first day of last month')));