Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未完成时,PostgreSQL将在两个记录之间进行选择_Postgresql - Fatal编程技术网

未完成时,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 |