2017-01-12 8 views
0

範囲エラー外である9.1にそれを修正する方法は以下のPostgres 9.1のコードでのPostgres 9.1

ERROR: input is out of range 
CONTEXT: SQL function "gc_dist1" statement 1 

エラーを生成しますか? acos()機能はあなたの例で は、それはケースだと高い値を受け入れることができないので、失敗した場合

create or replace function gc_dist1(_lat1 float8, _lon1 float8, _lat2 float8, _lon2 float8) 
returns float8 as $$ 
select ACOS(SIN(radians($1))*SIN(radians($3))+COS(radians($1))*COS(radians($3))*COS(radians($4)-radians($2)))*6371; 
$$ language sql immutable; 

select gc_dist1(24.6269989013672,59.3357849157094,24.6269989013672,59.3357849121094); 
+0

距離計算のために、PostgreSQLの['earthdistance'](https://www.postgresql.org/docs/current/static/earthdistance.html)モジュールを使うことができます。セット:[PostGIS](http://postgis.net) – pozs

答えて

0

SELECT (
     SIN(radians(24.6269989013672)) 
     * SIN(radians(24.6269989013672)) 
     + COS(radians(24.6269989013672)) 
     * COS(radians(24.6269989013672)) 
     * COS(radians(59.3357849121094)-radians(59.3357849157094)) 
    ) > 1 -- true 

機能のロジックが正しくないようです。

関連する問題