MySQL/Mariadb -Funktion zur Berechnung der Sonnenaufgang/Sonnenuntergangszeit basierend auf Datum und Breitengrad/Längengrad.
Diese Implementierung basiert auf dem Algorithmus, der unter http://web.archive.org/web/20161202180207/http://williams.best.vwh.net/sunrise_sunset_algorithm.htm
Eine leistungsstärkere Variante kann unter lib_mysqludf_astro als mySQL ladbare Funktionsinimpomentierung gefunden werden.
Führen Sie beispielsweise den Code von sunriseset.sql aus
mysql -u <username> -p <yourdb> < SunRiseSet.sql
Rufen Sie die Funktion mit Datum, Ihrem Standort und zu welcher Zeit, die Sie zurückbringen möchten (Sonnenaufgang, Sonnenuntergang)
Der Paramater ist:
Interessendatum-MySQL Datum Format yyyy-mm-dd
Standortbreite - Schwimmer
Standort Länge - Schwimmer
Positiv für Ost und negativ für West.
Suns Zenith für Sonnenaufgang/Sonnenuntergang: Enum ['offiziell', 'zivil', 'nautisch', 'astronomisch'] oder float
Gewünschtes Ergebnis - Enum ['Sunrise', 'Sunset']
Ersetzen Sie den Breitengrad 0,0000 und Länge 0,0000 durch Ihre lokalen Einstellungen:
-- 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');