未完成时,PostgreSQL将在两个记录之间进行选择
为什么此查询返回记录?:未完成时,PostgreSQL将在两个记录之间进行选择,postgresql,Postgresql,为什么此查询返回记录?: db2=> select * FROM series WHERE start <= '882001010000' AND "end" >= '882001010000' ORDER BY timestamp DESC LIMIT 1; id | timestamp | start | end | -------+---------------------+----------+----------- 234
db2=> select * FROM series WHERE start <= '882001010000' AND "end" >= '882001010000' ORDER BY timestamp DESC LIMIT 1;
id | timestamp | start | end |
-------+---------------------+----------+-----------
23443 | 2016-12-23 17:10:05 | 88160000 | 88209999 |
“开始”和“结束”是文本列。它们返回记录,因为您是以字符串而不是数字进行比较的 因此:
'8'
介于'7000000'
和'9000'
之间,因为每次比较一个字符
如果要进行数字比较,可以将值强制转换为数字。或者,更好的是,将值表示为数字。Postgres具有非常高的精度。为什么,哦,为什么你要将数字存储为
文本
?不要那样做。
db2=> select * FROM series WHERE '882001010000' BETWEEN start AND "end" ORDER BY timestamp DESC LIMIT 1;
id | timestamp | start | end |
-------+---------------------+----------+-----------
23443 | 2016-12-23 17:10:05 | 88160000 | 88209999 |