一张表有一个created_at
字段, timestamp
类型, 现想要筛选出某一天的全部数据
1
mouxiaoshi 2021-06-04 16:58:32 +08:00
我们公司的业务是直接把业务日期字段(非创建时间字段)拆成了 year,month,day 的粒度,方便按年,月,日的组合查询
|
2
AoEiuV020 2021-06-04 16:59:25 +08:00
感觉这个 2 就比较合理了吧,1 是不是无法使用索引了,
|
4
clf 2021-06-04 18:07:03 +08:00
我可能会写成:
select * from XX where created_at >='2021-01-01 00:00:00' and created_at < '2021-01-02 00:00:00' 或者: BETWEEN '2021-01-01 00:00:00' AND '2021-01-02 00:00:00' (但这个我忘了 00 是前一天还是后一天的了。) 其实我是把数据库里所有时间相关字段设置为时间戳。因为时间戳对所有开发语言是通用的而且都有封装的操作库。而且数据库的查询效率很高。timestap 还会受到时区影响吧。 |
5
carity 2021-06-04 18:18:42 +08:00
2 少查了一秒数据
|
7
liuzhaowei55 2021-06-04 19:16:58 +08:00 via iPhone 1
2 楼说的是对的,函数无法使用索引
|
8
sagaxu 2021-06-04 19:26:30 +08:00 via Android
select * from XX where created_at >= '2021-01-01' and created_at < '2021-01-02'
|
9
shingle 2021-06-04 23:10:54 +08:00 via iPhone
楼上+1 只精确到日期,默认就会补全到 0 点
|
10
akira 2021-06-04 23:24:24 +08:00
2. 或者加个字段放日期
|
12
wy315700 2021-06-05 06:19:55 +08:00 via iPhone 1
>= 2021-01-01
and < 2021-01-02 |
13
Jaron0608 2021-06-05 08:09:21 +08:00 via Android
加个字段,日期分区
|