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 |
+ -- ------------------+---------+----------------------+