gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 06:57:12 26 4
gpt4 key购买 nike

我有一堆带时间戳的行(使用“日期时间”数据类型)

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

该列已编入索引,所以我不能执行 MONTH(timestamp) = 3,因为这会使该索引无法使用。

如果我有年份和月份变量(在 perl 中),是否有一些可怕的 SQL 我可以使用,例如:

timestamp BETWEEN DATE($year, $month, 0) AND DATE($year, $month, 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' .


也许这看起来不太“好”;但它会起作用;并使用索引...这是我遇到此类问题时通常使用的解决方案。

关于sql - select * from table where datetime in month(不破坏索引),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2328051/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com