请问SELECT *(全部)哪个日期从上个月的最后一天开始到下个月的第一天

时间:2011-07-01 13:36:09

标签: php mysql sql date select

使用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"; 

2 个答案:

答案 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:002011-08-01 23:59:59之间提供所有日期时间。