更新
一种更好的索引友好型查询日期范围内数据的方法
SELECt id, FROM_UNIXTIME(timestampfield) timestamp FROM table1 WHERe timestampfield >= UNIX_TIMESTAMP(LAST_DAY(CURDATE()) + INTERVAL 1 DAY - INTERVAL 1 MONTH) AND timestampfield < UNIX_TIMESTAMP(LAST_DAY(CURDATE()) + INTERVAL 1 DAY);
注意:
您不对列数据应用任何函数,而是在条件的右侧进行所有必要的计算(它们是常量,并且仅在执行后评估一次)。这样,您就可以使MySQL受益于该
timestampfield列上可能具有的索引。
原始答案:
SELECt id, FROM_UNIXTIME(timestampfield) timestamp FROM table1 WHERe MonTH(FROM_UNIXTIME(timestampfield)) = MonTH(CURDATE()) AND YEAR(FROM_UNIXTIME(timestampfield)) = YEAR(CURDATE())
注意:
尽管此查询产生正确的结果,但实际上使您可能在
timestampfield列上使用的索引的正确使用无效(这意味着MySQL将被强制执行全扫描)
这是 SQLFiddle 演示



