从时间戳列中选择当前月份记录mysql

我有一个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列上可能具有的索引。

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 的全部内容, 来源链接: utcz.com/qa/400965.html

回到顶部