为什么此查询会返回记录?:
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 |
或与BETWEEN:
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 |
开始和结束是TEXT列。
答案 0 :(得分:3)
他们正在返回记录,因为您正在进行比较,因为字符串不是数字。
因此:'8'
介于'7000000'
和'9000'
之间,因为比较一次只有一个字符。
如果要进行数字比较,可以将值转换为数字。或者,更好的是,将数值表示为数字。 Postgres具有非常大的精度。