0

您将如何选择本月 8 日和上月 8 日之间的所有记录而不在当月通过?我的日期列是日期类型。

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

我尝试在 PHP 中计算日期,然后将它们发送到 MySQL。但是在考虑到年数时它会变得有点复杂。我想知道这是否可以用 SQL 来完成?

4

2 回答 2

2

从可读性的角度来看,使用 PHP 可能更直接使用.strtotime()

以下内容应该可以帮助您入门:

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

更新

序数不像我上面想的那样工作。但是,假设您使用当月的同一天(即 8 日)。以下是好的:

echo date('Y-m-08', strtotime('last month'));
于 2012-09-06T03:33:10.280 回答
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')));
于 2012-09-06T03:43:17.953 回答