使用PHP和MySQL,并希望使用SELECT语句,date_post(datetime变量)从上个月的最后一天开始,到下个月的第一天,请帮助我。
提前谢谢。
my database: 'id', 'content', 'image', 'date_post',
等。我尝试使用
$today = getdate();
$thisyear=$today['year'];
$thismon=$today['mon'];
$date_start=$thisyear.'-'.$thismon.'-01';
$date_end=$thisyear.'-'.($thismon+1).'-01';
$sql="SELECT *, DATE_FORMAT(date_post, '%d-%m-%Y') AS datepost
FROM my_table
WHERE date_post BETWEEN date('$date_start')
AND date('$date_end')
ORDER BY date_post DESC";
答案 0 :(得分:1)
它在MySQL中使用一个查询,没有任何PHP:
SELECT * FROM `table_name`
WHERE DATE(`date_post`) >= DATE_FORMAT(CURDATE() - INTERVAL 1 MONTH, CONCAT('%Y-%m-', DAY(LAST_DAY(CURDATE() - INTERVAL 1 MONTH))))
AND DATE(`date_post`) <= DATE_FORMAT(CURDATE() + INTERVAL 1 MONTH, '%Y-%m-01');
答案 1 :(得分:1)
确保查询不会扫描整个表,但会使用date_post
的索引(如果有的话!):
SELECT *
FROM myTable
WHERE date_post < LAST_DAY(CURDATE())
+ INTERVAL 2 DAY
AND date_Post >= LAST_DAY( LAST_DAY( CURDATE()) - INTERVAL 1 MONTH )
如果今天运行(2011-07-01
),它会在2011-06-31 00:00:00
和2011-08-01 23:59:59
之间提供所有日期时间。