--'================================================================================= --' Distance Calculator --'================================================================================= --' This function calculates the distance between two latitude/logitude --' coordinates. Disance can be returned as Kilometers or Miles. --' --' This function was designed for Microsoft SQL Server 2005 --' --' Accepts: --' Lat1 = Latitude of point one (decimal, required) --' Lon1 = Longitude of point one (decimal, required) --' Lat2 = Latitude of point two (decimal, required) --' Lon2 = Longitude of point two (decimal, required) -- --' --' Provided by: http://www.zip-codes.com --' --' © 2005 Zip-Codes.com, All Rights Reserved --'================================================================================= CREATE function [Distance]( @lat1 decimal(12, 6) , @long1 decimal(12, 6) , @lat2 decimal(12, 6) , @long2 decimal(12, 6)) returns decimal(12,2) as begin if @lat1 = @lat2 and @long1 = @long2 begin return 0 end declare @DegToRad as float declare @Ans as float declare @Miles as decimal(12,2) set @DegToRad = 57.29577951 set @Ans = 0 set @Miles = 0 if @lat1 is null or @lat1 = 0 or @long1 is null or @long1 = 0 or @lat2 is null or @lat2 = 0 or @long2 is null or @long2 = 0 begin return ( @Miles ) end set @Ans = SIN(@lat1 / @DegToRad) * SIN(@lat2 / @DegToRad) + COS(@lat1 / @DegToRad ) * COS( @lat2 / @DegToRad ) * COS(ABS(@long2 - @long1 )/@DegToRad) set @Miles = 3959 * ATAN(SQRT(1 - SQUARE(@Ans)) / @Ans) return ( @Miles ) end