mysql转换小数,MySQL将度,分,秒转换为度小数

I have multiple rows of Degrees Minutes Seconds that I need to convert with a query.

36°19'11.46" N = 36.31985

95°36'02.22" W = 95.600617

Each row is going to be different. I've been stuck on this for two days. Is this even possible?

解决方案

Nice lifehack: reverse problem solution (degree to DMS) using SEC_TO_TIME built-in MySQL function:

CREATE FUNCTION `geocoords`(lon double, lat double) RETURNS varchar(24) CHARSET cp1251

NO SQL

DETERMINISTIC

begin

declare alon double;

declare alat double;

declare slon varchar(12);

declare slat varchar(12);

set alon = abs(lon);

set alat = abs(lat);

set slon = TIME_FORMAT(SEC_TO_TIME(alon*3600), '%H°%i''%s"');

set slat = TIME_FORMAT(SEC_TO_TIME(alat*3600), '%H°%i''%s"');

if lon>0 then

set slon = concat(slon, 'E');

elseif lon<0 then

set slon = concat(slon, 'W');

end if;

if lat>0 then

set slat = concat(slat, 'N');

elseif lat<0 then

set slat = concat(slat, 'S');

end if;

return concat(slat, ' ', slon);

end

SELECT geocoords(30.550157546997, 50.344024658203)

50°20'38"N 30°33'01"E

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值