我想显示2014年5月的当前记录, 我正在尝试使用以下查询来记录
SELECT * FROM table1 WHERE DateTime > (CURDATE() - INTERVAL 1 MONTH)
尝试使用php在显示记录上查询并在mysql(phpmyadmin)上查询但产生错误的记录,因为它显示了上个月的记录,即4月
也许查询错了,有什么想法吗?建议?
答案 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;
它不优雅,但它会起作用