我有一个mysql数据库,其中有一个TIMESTAMP字段,标题为date。如何选择月份为当前月份的所有字段?
提前致谢!
更新
一种更好的索引友好型查询日期范围内数据的方法
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列上可能具有的索引。
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 演示