加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

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

发布时间:2020-12-11 23:32:16 所属栏目:MySql教程 来源:网络整理
导读:我有一堆带时间戳的行(使用datetime数据类型) 我想选择时间戳在特定月份内的所有行. 该列已编入索引,因此我无法执行MONTH(timestamp)= 3,因为这会使该索引无法使用. 如果我有年和月变量(在perl中),是否有一个可怕的SQL我可以使用如下: timestamp BETWEEN DA

我有一堆带时间戳的行(使用’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′.
也许这看起来并不“好看”;但它会起作用;并使用索引…当我遇到这种问题时,这是我经常使用的一种解决方案.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读