lib_mysqludf_astro
1.0.0
該存儲庫包含MySQL可加載功能庫(以前稱為UDF-用戶定義的功能)的源代碼,該功能提供了一個附加的SQL Astrononmy函數,以獲取給定地理位置和時間的Astro Sun和Moon信息。
該計算基於ESP32-佔地的C ++天文學類的適應。
如果您喜歡lib_mysqludf_astro ,請給它一顆星或分叉:
從基本目錄運行:
make clean
make
sudo make install這將構建並安裝庫文件。
要創建一個特定於國家 /地區的版本,請使用參數lang = -dlang_xx進行調用make命令,其中xx是國家代碼:de =德語,es =西班牙語,fr =法語,it = italian,nl = nl =荷蘭,en =英語(默認)。
示例:創建和安裝荷蘭二進制用途
make clean
make LANG=-DLANG_NL
sudo make install最後,我們激活MySQL Server中的可加載函數(由具有創建功能的權限的本地MySQL用戶替換username ,例如root)
mysql -u username -p < install.sql要使用SQL查詢,請首先卸載MySQL Server中的可加載功能:
DROP FUNCTION IF EXISTS astro_info;
DROP FUNCTION IF EXISTS astro;然後使用命令行卸載庫:
sudo make uninstall返回給定日期,地理位置和時區的Astro Info作為JSON字符串。
給定的有效日期,中的“ Yyyy-MM-DD HH:MM:SS”格式。無效的日期導致無效的值。
北 - 以度格式的點位置
一個學位格式的點位置
小時內從UTC偏移時區
該功能將Astro Info返回為JSON字符串,並帶有以下鍵:
| JSON KEY | 描述 | 格式/單位 |
|---|---|---|
| $。時間 | 給定結果日期 | 'Yyyy-MM-DDTHH:MM:SS' |
| $。區 | 小時內從UTC偏移時區 | 小時 |
| $。儀 | 地理緯度 | 學位 |
| $。長度 | 地理經度 | 學位 |
| $ .deltat | Deltat | 十進制 |
| $ .. juliandate | 朱利安約會 | 十進制 |
| $ .gmst | 格林威治恆星時間 | 'HH:MM:SS' |
| $ .lmst | 當地的恆星時間 | 'HH:MM:SS' |
| $ .sun.distance.earth | 距離太陽的距離(地球中心) | 公里 |
| $ .sun.distance.Observer | 距離太陽的距離(與觀察者) | 公里 |
| $ .sun.ecliptic | 陽光的黃道 | 學位 |
| $ .sun.Declination | decl | 學位 |
| $ .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.Culation | 太陽的高潮 | '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.ascension | 右升天 | 'HH:MM:SS' |
| $ .sun.zodiac | 十二生肖 | 白羊座,金牛座,雙子座,癌症,獅子座,處女座,天秤座,天蠍座,射手座,摩ri座,水瓶座,雙魚座 |
| $ .moon.distance.earth | 距離月球(地球中心)的距離 | 公里 |
| $ .moon.distance.Observer | 到達月球的距離(與觀察者) | 公里 |
| $ .moon.ecliptic.Latitude | 月球的黃道緯度 | 學位 |
| $ .moon.ecliptic | 月球經度 | 學位 |
| $ .moon.Declination | 月亮的偏差 | 學位 |
| $ .moon.azimuth | 月亮方位角 | 學位 |
| $ .moon.height | 月球高度的高度 | 學位 |
| $ .moon.diameter | 月球直徑 | 弧秒 |
| $ .moon.rise | 月亮 | 'HH:MM:SS' |
| $ .moon.Culation | 月亮的高潮 | 'HH:MM:SS' |
| $ .moon.set | 月亮 | 'HH:MM:SS' |
| $ .moon.ascension | 右升天 | 'HH:MM:SS' |
| $ .moon.phase.name | 月相名稱 | 新月,打蠟的新月,第一季度,打蠟的長子,滿月,醒來的長子,第三季度,新月衰弱 |
| $ .moon.phase.value | 月期作為指數 | 0..7 |
| $ .moon.phase.number | 自新月(0)以來,月亮的年齡 - 滿月(1) | 十進制 |
| $。 .moon.age | 月亮的年齡在弧度 | 0..359 |
| $ .moon.sign | 月球標誌 | 白羊座,金牛座,雙子座,癌症,獅子座,處女座,天秤座,天蠍座,射手座,摩ri座,水瓶座,雙魚座 |
例子:
{
"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 |
+ -- ------------------+---------+----------------------+