sql – select * from table where datetime in month(不破坏索引)

前端之家收集整理的这篇文章主要介绍了sql – select * from table where datetime in month(不破坏索引)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一堆带时间戳的行(使用’datetime’数据类型)

我想选择时间戳在特定月份内的所有行.

该列已编入索引,因此我无法执行MONTH(timestamp)= 3,因为这会使该索引无法使用.

如果我有年和月变量(在perl中),是否有一个可怕的sql我可以使用如下:

timestamp BETWEEN DATE($year,$month,0) AND DATE($year,31);

但更好,实际上有效吗?

最佳答案
我实际上会考虑你提出的想法;可能差别很小:

select *
from your_table 
where date_field >= '2010-01-01'
    and date_field < '2010-02-01'

(当然,由你决定使用$year和$month)

注意< '2010-02-01'部分:如果您有包含时间的日期,您可能需要考虑这一点. 例如,如果您的某一行的日期类似于“2010-01-31 12:53:12”,那么您可能希望选择该行 – 默认情况下,“2010-01-31”表示“2010” -01-31 00:00:00′.
也许这看起来并不“好看”;但它会起作用;并使用索引…当我遇到这种问题时,这是我经常使用的一种解决方案.

原文链接:https://www.f2er.com/mysql/433844.html

猜你在找的MySQL相关文章