从时间戳列中选择当前月份记录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