sql当前月查询

时间:2014-05-08 10:40:55

标签: php mysql

我想显示2014年5月的当前记录, 我正在尝试使用以下查询来记录

SELECT * FROM table1 WHERE DateTime > (CURDATE() - INTERVAL 1 MONTH)

尝试使用php在显示记录上查询并在mysql(phpmyadmin)上查询但产生错误的记录,因为它显示了上个月的记录,即4月

也许查询错了,有什么想法吗?建议?

5 个答案:

答案 0 :(得分:3)

如果当前日期是5月7日,则减去1个月是4月7日,并且您的查询将返回此后的所有行。您需要从当月的第一个日期开始。

SELECT *
FROM table1
WHERE DateTime >= DATE_FORMAT(NOW(), '%Y-%m-01 00:00:00');

答案 1 :(得分:0)

您可以使用LAST_DAY

执行此操作
SELECT * 
FROM table1 
WHERE 
`DateTime` > LAST_DAY(NOW() - INTERVAL 1 MONTH) 
AND `DateTime` <= LAST_DAY(NOW())
  

LAST_DAY()获取日期或日期时间值并返回相应的值   这个月的最后一天

至于案例barmar突出显示你可以这样做

SELECT * 
FROM table1 
WHERE 
`DateTime` > CONCAT(LAST_DAY(NOW() - INTERVAL 1 MONTH),' 23:59:59') 
AND `DateTime` <= LAST_DAY(NOW())

答案 2 :(得分:0)

我喜欢这样写:

SELECT *
FROM table1
WHERE DateTime >= CURDATE() - INTERVAL DAY(CURDATE())-1 DAY

答案 3 :(得分:0)

如果您指的是当前日历月(因此DateTime月与当月相同的所有记录),您可以使用MONTH函数和YEAR函数来提取这些值:

SELECT * FROM table1 
WHERE MONTH(DateTime) = MONTH(NOW()) AND YEAR(DateTime) = YEAR(NOW())

答案 4 :(得分:0)

set @YM=concat(year(now()),'-',month(now()));

select
    *
from
    table1
where
    concat(year(DateTime),'-',month(DateTime))=@YM;

它不优雅,但它会起作用