首页 > 数据库 >MySQL 根据经纬度计算距离

MySQL 根据经纬度计算距离

时间:2022-11-13 10:45:11浏览次数:36  
标签:15 经纬度 sysLatitude DECIMAL 距离 180 MySQL 20 PI

CREATE FUNCTION `fun_get_distance` (
    `myLongitude` DECIMAL ( 20, 15 ),
    `myLatitude` DECIMAL ( 20, 15 ),
    `sysLongitude` DECIMAL ( 20, 15 ),
    `sysLatitude` DECIMAL ( 20, 15 )) RETURNS DECIMAL ( 20, 15 ) BEGIN
/*
`myLongitude` decimal(20,15),     我的经度
`myLatitude` decimal(20,15),      我的纬度
`sysLongitude` decimal(20,15), 系统的经度
`sysLatitude` decimal(20,15)   系统的纬度
*/
    DECLARE
        distance DECIMAL ( 20, 15 );
    
    SET distance = 6378.138 * 2 * ASIN(
        SQRT(
            POW( SIN(( myLatitude * PI() / 180 - sysLatitude * PI() / 180 ) / 2 ), 2 ) + COS( myLatitude * PI() / 180 ) * COS( sysLatitude * PI() / 180 ) * POW( SIN( ( myLongitude * PI() / 180 - sysLongitude * PI() / 180 ) / 2 ), 2 ) 
        ) 
    );
    RETURN distance;

END

 

标签:15,经纬度,sysLatitude,DECIMAL,距离,180,MySQL,20,PI
From: https://www.cnblogs.com/qq244351257/p/16885519.html

相关文章

  • MySql悲观锁(行锁)和乐观锁
    原文网址:https://blog.csdn.net/weixin_45433031/article/details/120838045什么是乐观锁,什么是悲观锁?一、并发控制当程序中可能出现并发的情况时,就需要保证在并发情况......
  • Mysql8.0本地Datagrip失败--时区
    新版的Mysql中的时区默认设置与本地时区之间是不同的,因此会报错。由此,解决方法即为修改时区设置即可 ?serverTimezone=UTC ......
  • mysql 优化分表 存储引擎
    分表--创建key分表createtableuser1(uidintauto_incrementprimarykey,unamevarchar(20)notnull)engine=myisamdefaultcharset=utf8partitionbykey(ui......
  • MySQL操作练习:library
    查询前请创建对应的数据库和表:createdatabases`library`;uselibrary;createtablebook(bnochar(20)notnullprimarykey,bnamevarchar(50),aut......
  • 22-MySQL架构与性能优化
    架构:C/SConnectors:连接器可供NativeCAPI、JDBC、ODBC、NET、PHP、Perl、Python、Ruby、Cobol等连接mysql;站在编程角度可以理解为连入数据库管理系统的驱动,站在mysql角度......
  • Mysql中REPLACE INTO用法,判断数据是否存在,如果不存在,则插入,如果存在,则先删除此行数据,
    MySQLreplaceinto用法在向表中插入数据的时候,经常遇到这样的情况:1.首先判断数据是否存在;2.如果不存在,则插入;3.如果存在,则先删除后再插入新数据行。MySQL中实现这......
  • mysql系列14---docker容器下mysql数据库还原与备份
    一、数据库定时备份1、编写mysql在docker容器中备份的shell脚本:#!/bin/bash#docker启动的mysql备份mysql_user="root"#数据库密码,注意自行修改mysql_password="1234......
  • 成功进入mysql后无法对数据库进行操作【mysql】You must reset your password using A
    安装完mysql之后,登陆以后,不管运行任何命令,总是提示这个mysql>showdatabases;ERROR1820(HY000):YoumustresetyourpasswordusingALTERUSERstatementbeforee......
  • linux下安装MySQL8.0
    linux下安装MySQL8.0本次安装演示版本为8.0.281、准备安装目录及其安装包cd/usr/local/mkdirmysqlcdmysql#使用wget下载mysql安装包(如果下载慢,可自行提前准备安......
  • MySQL命令语法
    目录MySQL命令/语法启动MySQL服务退出MySQL服务查看MySQL中有哪些数据库选择需要操作的数据库创建数据库查看当前使用的数据库查看数据库中有哪些表查看表结构查询所有字......