sql >> Databasteknik >  >> RDS >> Mysql

MySQL konverterar Degree, Minutes, Seconds till Degree decimal

Trevligt lifehack:omvänd problemlösning (grad till DMS) med SEC_TO_TIME inbyggd MySQL-funktion:

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


  1. MySQL 5.5 främmande nyckel-begränsning misslyckas när främmande nyckel finns

  2. Enkelt citat, dubbelt citat och backticks i MySQL-frågor

  3. MySQL-prestanda - IN-klausul kontra lika med (=) för ett enskilt värde

  4. MySQL/PHP-fel:[2002] Endast en användning av varje socketadress (protokoll/nätverksadress/port) är normalt tillåten