mysql_SunRiseSet
1.0.0
mysql/mariadb関数日付と緯度/経度に基づいて日の出/日没時間を計算します。
この実装は、http://web.archive.org/web/20161202180207/http://williams.best.vwh.net/sunrise_sunset_algorithm.htmにあるアルゴリズムに基づいています。
より強力なバリアントは、lib_mysqludf_astroの下でMySQLロード可能な関数実装として見つけることができます。
たとえば、sunriseet.sqlのコードを実行します
mysql -u <username> -p <yourdb> < SunRiseSet.sql
日付、あなたの場所、そしてどの時間を取り戻したいか(日の出、日没)で関数を呼び出します
パラマタは次のとおりです。
関心のある日付-MySQL日付形式yyyy-mm-dd
位置緯度 - フロート
位置経度 - フロート
東は陽性で、西はネガティブです。
日の出/日没のための太陽の天頂:列挙[「公式」、「市民」、「航海」、「天文学」]またはフロート
希望の結果-Enum ['Sunrise'、 'Sunset']
緯度0.0000と経度0.0000をローカル設定に置き換えます。
-- 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');