我有一个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/