Fonction MySQL / MARIADB pour calculer l'heure du lever du soleil / coucher du soleil en fonction de la date et de la latitude / longitude.
Cette implémentation est basée par l'algorithme trouvé sur http://web.archive.org/web/20161202180207/http://williams.best.vwh.net/sunrise_sunset_algorithm.htm
Une variante plus puissante peut être trouvée en tant qu'implémentation de fonction MySQL chargable sous lib_mysqludf_astro.
Exécutez le code de SunRiseset.sql, par exemple
mysql -u <username> -p <yourdb> < SunRiseSet.sql
Appelez la fonction avec Date, votre emplacement et quelle heure vous voulez revenir (Sunrise, Sunset)
Les paramater sont:
Date d'intérêt - Mysql Date Format yyyy-mm-dd
Location Latitude - Float
Emplacement Longitude - Float
Positif pour l'est et négatif pour l'ouest.
Sun's Zenith for Sunrise / Sunset: Enum ['officiel', 'civil', 'nautical', 'astronomical'] ou float
Résultat souhaité - Enum ['Sunrise', 'Sunset']
Remplacez la latitude 0,0000 et la longitude 0,0000 par vos paramètres locaux:
-- 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');