In addition to Weibo, there is also WeChat
Please pay attention
WeChat public account
Shulou
2025-01-29 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Database >
Share
Shulou(Shulou.com)06/01 Report--
No zuo no die series, from wiki of pg.
This section is about: don't use between.
The reason is:
BETWEEN uses a closed-interval comparison: the values of both ends of the specified range are included in the result.
This is a particular problem with queries of the form
SELECT FROM blah WHERE timestampcol BETWEEN '2018-06-01' AND '2018-06-08'
This will include results where the timestamp is exactly 2018-06-08 00 This will include results where the timestamp is exactly 00.000000, but not timestamps later in that same day. So the query might seem to work, but as soon as you get an entry exactly on midnight, you'll end up double-counting it.
Instead, do:
SELECT FROM blah WHERE timestampcol > = '2018-06-01' AND timestampcol
< '2018-06-08' 原因是between是闭合区间,在处理日期时会丢失精度,比如日期'2018-06-08'会认为是'2018-06-08 00:00:00.000000'而不是'2018-06-08 23:59:59.999999',下面举例说明。 创建数据表并插入数据 [local]:5432 pg12@testdb=# drop table if exists t_between;DROP TABLETime: 4.715 ms[local]:5432 pg12@testdb=# create table t_between(id int,tz timestamptz);CREATE TABLETime: 4.788 ms[local]:5432 pg12@testdb=# [local]:5432 pg12@testdb=# insert into t_between values(1,CURRENT_TIMESTAMP);INSERT 0 1Time: 3.620 ms[local]:5432 pg12@testdb=# insert into t_between values(2,now());INSERT 0 1Time: 2.319 ms[local]:5432 pg12@testdb=# insert into t_between values(3,date_trunc('second',CURRENT_TIMESTAMP));INSERT 0 1Time: 2.542 ms[local]:5432 pg12@testdb=# insert into t_between values(4,date_trunc('day',CURRENT_TIMESTAMP));INSERT 0 1Time: 2.766 ms[local]:5432 pg12@testdb=# select * from t_between order by id; id | tz ----+------------------------------- 1 | 2019-10-17 11:47:07.876236+08 2 | 2019-10-17 11:47:07.881309+08 3 | 2019-10-17 11:47:07+08 4 | 2019-10-17 00:00:00+08(4 rows)Time: 1.760 ms 查询数据 [local]:5432 pg12@testdb=# select * from t_between where tz between'2019-10-16' and '2019-10-17'; id | tz ----+------------------------ 4 | 2019-10-17 00:00:00+08(1 row)Time: 1.691 ms[local]:5432 pg12@testdb=# select * from t_between where tz >= '2019-10-16' and tz < '2019-10-17'; id | tz-+-(0 rows) Time: 1.186 ms [local]: 5432 pg12@testdb=#
Using between will output data with a value of 2019-10-17 00, so it is recommended to use normal comparators (>, <, =, etc.).
references
Don't Do This
Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.
Views: 0
*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.
Continue with the installation of the previous hadoop.First, install zookooper1. Decompress zookoope
"Every 5-10 years, there's a rare product, a really special, very unusual product that's the most un
© 2024 shulou.com SLNews company. All rights reserved.