Função MySQL/Mariadb para calcular o tempo do nascer/pôr do sol com base na data e na latitude/longitude.
Esta implementação é baseada no algoritmo encontrado em http://web.archive.org/web/20161202180207/http://williams.best.vwh.net/sunrise_sunset_algorithm.htm
Uma variante mais poderosa pode ser encontrada como uma implementação de função carregável MySQL em lib_mysqludf_astro.
Executar o código de sunriseset.sql, por exemplo
mysql -u <username> -p <yourdb> < SunRiseSet.sql
Ligue para a função na data, sua localização e com que hora você deseja voltar (nascer do sol, pôr do sol)
O paramater é:
Data de juros-Formato de data yyyy-mm-dd MySQL
Latitude de localização - flutuação
Localização Longitude - Float
Positivo para o leste e negativo para o oeste.
Zenito do Sun para o nascer/pôr do sol: enum ['oficial', 'civil', 'náutico', 'astronômico'] ou flutuação
Resultado desejado - Enum ['Sunrise', 'Sunset']
Substitua a latitude 0,0000 e a longitude 0,0000 pelas configurações locais:
-- official sunset/sunrise
SELECT system.SunRiseSet(NOW(), 0.0000, 0.0000, 'official', 'sunset'), system.SunRiseSet(NOW(), 0.0000, 0.0000, 'official', 'sunrise');
SELECT system.SunRiseSet(NOW(), 0.0000, 0.0000, 90+(50/60), 'sunset'), system.SunRiseSet(NOW(), 0.0000, 0.0000, 90.833333333, 'sunrise');
-- civil
SELECT system.SunRiseSet(NOW(), 0.0000, 0.0000, 'civil', 'sunset'), system.SunRiseSet(NOW(), 0.0000, 0.0000, 'civil', 'rise');
SELECT system.SunRiseSet(NOW(), 0.0000, 0.0000, 96, 'sunset'), system.SunRiseSet(NOW(), 0.0000, 0.0000, 96, 'rise');
-- nautical
SELECT system.SunRiseSet(NOW(), 0.0000, 0.0000, 'nautical', 'set'), system.SunRiseSet(NOW(), 0.0000, 0.0000, 'nautical', 'rise');
-- astronomical
SELECT system.SunRiseSet(NOW(), 0.0000, 0.0000, 'astro', 'sunset'), system.SunRiseSet(NOW(), 0.0000, 0.0000, 'astro', 'sunrise');
-- self defined sun horizon level
SELECT system.SunRiseSet(NOW(), 0.0000, 0.0000, 86.2, 'sunset'), system.SunRiseSet(NOW(), 0.0000, 0.0000, 86.2, 'sunrise');