このリポジトリには、MySQLロード可能な関数ライブラリ(以前はUDFと呼ばれるユーザー定義関数と呼ばれる)のソースコードが含まれています。これは、特定の地理的位置と時間のアストロサンと月の情報を取得するための添加物SQL ASTL ASTRONMY関数を提供します。
計算は、ESP32-AstronolotomieからのC ++天文学クラスの適応に基づいています。
lib_mysqludf_astroが好きなら、それに星を与えたり、それをフォークしたりします:
ベースディレクトリの実行から:
make clean
make
sudo make installこれにより、ライブラリファイルが構築されてインストールされます。
国固有のバージョンを作成するには、パラメーターlang = -dlang_xxを使用してコマンドを呼び出します。ここで、xxは国コードです:de =ドイツ語、es =スペイン語、fr =フランス語、it =イタリア語、nl =オランダ、en =英語(デフォルト)。
例:オランダのバイナリ使用を作成してインストールします
make clean
make LANG=-DLANG_NL
sudo make install最後に、MySQL Serverのロード可能な関数をアクティブにします( usernameをローカルMySQLユーザーに置き換えます。
mysql -u username -p < install.sqlSQLクエリを使用して、MySQLサーバー内のロード可能な機能を最初に解除するには:
DROP FUNCTION IF EXISTS astro_info;
DROP FUNCTION IF EXISTS astro;次に、コマンドラインを使用してライブラリをアンインストールします。
sudo make uninstall与えられた日付のアストロ情報、ジオロケーション、タイムゾーンをJSON文字列として返します。
'yyyy-mm-dd hh:mm:ss'形式の有効な日付。無効な日付はヌル値になります。
程度のポイント形式の北と南の位置
程度のポイントの東西位置形式
UTCからのタイムゾーンオフセット
この関数は、Astro情報を次のキーでJSON文字列として返します。
| JSONキー | 説明 | フォーマット/ユニット |
|---|---|---|
| $。TIME | 指定された結果の日付 | 'yyyy-mm-ddthh:mm:ss' |
| $ .ZONE | UTCからのタイムゾーンオフセット | 時間 |
| $ .latitude | 地理的緯度 | 学位 |
| $ .longitude | 地理的経度 | 学位 |
| $ .deltat | deltat | 小数 |
| $ .juliandate | ジュリアンデート | 小数 |
| $ .gmst | グリニッジの恒星の時間 | 'HH:mm:ss' |
| $ .lmst | 地元の恒星の時間 | 'HH:mm:ss' |
| $ .sun.distance.earth | 太陽までの距離(地球の中心) | km |
| $ .sun.distance.observer | 太陽までの距離(観察者から) | km |
| $ .sun.ecliptic | 太陽の黄道の長さ | 学位 |
| $ .sun.declination | 太陽の偏角 | 学位 |
| $ .sun.azimuth | 太陽の方位角 | 学位 |
| $ .sun.height | 地平線の上の太陽の高さ | 学位 |
| $ .sun.diameter | 太陽の直径 | アーク秒 |
| $ .sun.rise.Astronomical | 天文学的な夜明け | 'HH:mm:ss' |
| $ .sun.rise.nautical | 航海の夜明け | 'HH:mm:ss' |
| $ .sun.rise.civil | 市民夜 | 'HH:mm:ss' |
| $ .sun.rise.sunrise | 日の出 | 'HH:mm:ss' |
| $ .sun.culmination | 太陽の頂点 | 'HH:mm:ss' |
| $ .sun.set.sunset | 日没 | 'HH:mm:ss' |
| $ .sun.set.civil | 市民の夕暮れ | 'HH:mm:ss' |
| $ .sun.set.nautical | 航海夕暮れ | 'HH:mm:ss' |
| $ .sun.set.astronomical | 天文学的な夕暮れ | 'HH:mm:ss' |
| $ .sun.asscension | 太陽の右昇天 | 'HH:mm:ss' |
| $ .sun.zodiac | ゾディアック | 牡羊座、おうし座、ジェミニ、癌、レオ、乙女座、天秤座、さそり座、射手座、山羊座、水瓶座、魚座 |
| $ .MOON.DISTANCE.EARTH | 月までの距離(地球の中心) | km |
| $ .MOON.DISTANCE.OBSERVER | 月までの距離(オブザーバーから) | km |
| $ .moon.ecliptic.latitude | 月の黄道緯度 | 学位 |
| $ .moon.ecliptic.longitude | 月の黄道経度 | 学位 |
| $ .MOON.DECLINATION | 月の偏り | 学位 |
| $ .MOON.AZIMUTH | 月の方位角 | 学位 |
| $ .moon.height | 地平線の上の月の高さ | 学位 |
| $ .Moon.Diameter | 月の直径 | アーク秒 |
| $ .moon.rise | ムーンライズ | 'HH:mm:ss' |
| $ .MOON.CULMINATION | 月の頂点 | 'HH:mm:ss' |
| $ .moon.set | ムーンセット | 'HH:mm:ss' |
| $ .MOON.ASSCENSION | 月の右昇天 | 'HH:mm:ss' |
| $ .MOON.PHASE.NAME | ムーンフェーズ名 | 新月、ワックスクレセント、第1四半期、ワックスギブス、満月、衰退するギブス、第3四半期、衰退 |
| $ .MOON.PHASE.VALUE | インデックスとしての月相 | 0..7 |
| $ .MOON.PHASE.NUMBER | 新月以来の月の年齢(0) - 満月(1) | 小数 |
| $ .MOON.AGE | ラジアンの月の年齢 | 0..359 |
| $ .MOON.SIGN | 月のサイン | 牡羊座、おうし座、ジェミニ、癌、レオ、乙女座、天秤座、さそり座、射手座、山羊座、水瓶座、魚座 |
例:
{
"Time" : " 2023-01-18T09:00:00 " ,
"Zone" : 1 ,
"Latitude" : 53.182153 ,
"Longitude" : 4.854429 ,
"deltaT" : 65 ,
"JulianDate" : 2459962.83333 ,
"GMST" : " 15:49:54 " ,
"LMST" : " 16:09:19 " ,
"Sun" : {
"Distance" : {
"Earth" : 147182898.6 ,
"Observer" : 147182769.4
},
"Ecliptic" : 297.968 ,
"Declination" : -20.565 ,
"Azimuth" : 127.65 ,
"Height" : 1.5 ,
"Diameter" : 32.51 ,
"Rise" : {
"Astronomical" : " 06:39:38 " ,
"Nautical" : " 07:21:00 " ,
"Civil" : " 08:04:22 " ,
"Sunrise" : " 08:44:23 "
},
"Culmination" : " 12:50:58 " ,
"Set" : {
"Sunset" : " 16:58:02 " ,
"Civil" : " 17:38:04 " ,
"Nautical" : " 18:21:28 " ,
"Astronomical" : " 19:02:52 "
},
"Ascension" : " 20:00:14 " ,
"Zodiac" : " Capricorn "
},
"Moon" : {
"Distance" : {
"Earth" : 370620.2 ,
"Observer" : 369274.6
},
"Ecliptic" : {
"Latitude" : -2.528 ,
"Longitude" : 248.606
},
"Declination" : -25.195 ,
"Azimuth" : 176.16 ,
"Height" : 12 ,
"Diameter" : 32.24 ,
"Rise" : " 05:33:24 " ,
"Culmination" : " 09:17:17 " ,
"Set" : " 12:52:19 " ,
"Ascension" : " 16:25:58 " ,
"Phase" : {
"Name" : " Waning crescent " ,
"Value" : 7 ,
"Number" : 0.174
},
"Age" : 310.737 ,
"Sign" : " Sagittarius "
}
}太陽の上昇/セットを取得します
SET @ts = NOW();
SET @latitude = 53 . 182153 ;
SET @longitude = 4 . 854429 ;
SET @timezone = TIMESTAMPDIFF(HOUR, UTC_TIMESTAMP(), NOW());
SELECT
JSON_VALUE(astro(@ts, @latitude, @longitude, @timezone), ' $.Time ' ) AS ` Time ` ,
JSON_VALUE(astro(@ts, @latitude, @longitude, @timezone), ' $.Sun.Rise.Sunrise ' ) AS ` Sunrise ` ,
JSON_VALUE(astro(@ts, @latitude, @longitude, @timezone), ' $.Sun.Set.Sunset ' ) AS ` Sunset ` ;返品
+ -- -------------------+----------+----------+
| Time | Sunrise | Sunset |
+ -- -------------------+----------+----------+
| 2023 - 01 - 18T09: 00 : 00 | 08 : 44 : 23 | 16 : 58 : 02 |
+ -- -------------------+----------+----------+月の情報を入手してください
SET @ts = NOW();
SET @latitude = 53 . 182153 ;
SET @longitude = 4 . 854429 ;
SET @timezone = TIMESTAMPDIFF(HOUR, UTC_TIMESTAMP(), NOW());
SELECT
JSON_VALUE(astro(@ts, @latitude, @longitude, @timezone), ' $.Time ' ) AS ` Time ` ,
JSON_VALUE(astro(@ts, @latitude, @longitude, @timezone), ' $.Moon.Rise ' ) AS ` Moonrise ` ,
JSON_VALUE(astro(@ts, @latitude, @longitude, @timezone), ' $.Moon.Set ' ) AS ` Moonset ` ,
JSON_VALUE(astro(@ts, @latitude, @longitude, @timezone), ' $.Moon.Phase.Name ' ) AS ` Phase ` ,
ROUND(CAST(JSON_VALUE(astro(@ts, @latitude, @longitude, @timezone), ' $.Moon.Age ' ) AS FLOAT) / 3 . 6 , 0 ) AS ` % Age ` ;返品
+ -- -------------------+----------+----------+-----------------+-------+
| Time | Moonrise | Moonset | Phase | % Age |
+ -- -------------------+----------+----------+-----------------+-------+
| 2023 - 01 - 18T09: 00 : 00 | 05 : 33 : 24 | 12 : 52 : 19 | Waning crescent | 86 |
+ -- -------------------+----------+----------+-----------------+-------+ ライブラリ情報をJSON文字列として返します
例:
> SELECT
JSON_UNQUOTE(JSON_VALUE(astro_info(), ' $.Name ' )) AS Name,
JSON_UNQUOTE(JSON_VALUE(astro_info(), ' $."Version" ' )) AS Version,
JSON_UNQUOTE(JSON_VALUE(astro_info(), ' $."Build" ' )) AS Build;
+ -- ------------------+---------+----------------------+
| Name | Version | Build |
+ -- ------------------+---------+----------------------+
| lib_mysqludf_astro | 1 . 0 . 0 | Jan 18 2023 09 : 00 : 00 |
+ -- ------------------+---------+----------------------+