一张表有一个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 ![]() 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 ![]() >= 2021-01-01 and < 2021-01-02 |
![]() | 13 Jaron0608 2021-06-05 08:09:21 +08:00 via Android 加个字段,日期分区 |