Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Разстояние между две точки, използвайки тип данни за география в sqlserver 2008?

Ако имате вашата географска ширина и дължина под формата на градуси (точно както във вашата таблица ), тогава можете да използвате следната функция:

CREATE FUNCTION dbo.DictanceKM(@lat1 FLOAT, @lat2 FLOAT, @lon1 FLOAT, @lon2 FLOAT)
RETURNS FLOAT 
AS
BEGIN

    RETURN ACOS(SIN(PI()*@lat1/180.0)*SIN(PI()*@lat2/180.0)+COS(PI()*@lat1/180.0)*COS(PI()*@lat2/180.0)*COS(PI()*@lon2/180.0-PI()*@lon1/180.0))*6371
END

ИЛИ ако настоявате за тип География, използването е:

DECLARE @g geography;
DECLARE @h geography;
SET @g = geography::STGeomFromText('LINESTRING(-122.360 47.656, -122.343 47.656)', 4326);
SET @h = geography::STGeomFromText('POINT(-122.34900 47.65100)', 4326);
SELECT @g.STDistance(@h);



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. идентичност от sql вмъкване чрез jdbctemplate

  2. MSSQL - Преобразуване на милисекунди от 1970 г. в datetime2

  3. Поддържа ли Microsoft OLE DB доставчик за SQL Server TLS 1.2

  4. Извикване на недефинирана функция sqlsrv_connect() - Отстраняване на неизправности

  5. Как да изпълните тригер само когато се актуализира конкретна колона (SQL сървър)