我有一个mysql数据库,它有一个名为日期的时间戳字段。如何选择月份为当前月份的所有字段?
事先谢谢!

最佳答案

更新
一种更好的索引友好方法,用于查询数据的日期范围

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将被迫执行完全扫描)。
以下是演示

关于mysql - 从timestamp列中选择当前月份记录mysql,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16500527/

10-11 03:00