이 저장소에는 MySQL로드 가능한 기능 라이브러리 (이전에 UDF- 사용자 정의 함수라고도 함)의 소스 코드가 포함되어 있으며, 이는 주어진 지리적 위치 및 시간에 대한 Astro Sun 및 Moon 정보를 얻기 위해 추가 SQL Astrononmy 기능을 제공합니다.
계산은 ESP32-Pastonomie의 C ++ 천문학 클래스의 적응을 기반으로합니다.
lib_mysqludf_astro가 마음에 들면 별을 줘서 포크하십시오.
기본 디렉토리에서 실행 :
make clean
make
sudo make install라이브러리 파일을 빌드하고 설치합니다.
국가 별 버전을 만들려면 매개 변수 lang = -dlang_xx로 make 명령을 호출하십시오. 여기서 xx는 국가 코드입니다 : de = 독일어, es = 스페인어, fr = 프랑스어, it = italian, nl = 네덜란드, en = 영어 (기본값).
예 : 네덜란드 바이너리 사용을 생성하고 설치하십시오
make clean
make LANG=-DLANG_NL
sudo make install 마지막으로 MySQL Server에서로드 가능한 기능을 활성화합니다 (ROOL MYSQL 사용자가 기능을 작성할 수있는 권한이있는 로컬 MySQL 사용자가 username 대체합니다.
mysql -u username -p < install.sqlSQL 쿼리를 사용하여 MySQL 서버 내의로드 가능한 기능을 먼저 제거하려면 다음과 같습니다.
DROP FUNCTION IF EXISTS astro_info;
DROP FUNCTION IF EXISTS astro;그런 다음 명령 줄을 사용하여 라이브러리를 제거하십시오.
sudo make uninstall주어진 날짜, 지리적 위치 및 시간대를 JSON 문자열로 ASTRO 정보를 반환합니다.
'yyyy-mm-dd hh : mm : ss'형식의 주어진 유효한 날짜. 잘못된 날짜는 널 값을 초래합니다.
포인트의 남북 위치
포인트의 동서 위치
시간대에 시간대 오프셋
이 함수는 Astro Info를 다음 키를 가진 JSON 문자열로 반환합니다.
| JSON 키 | 설명 | 형식/단위 |
|---|---|---|
| $ .time | 주어진 결과의 날짜 | 'yyyy-mm-ddthh : mm : ss' |
| $. 존 | 시간대에 시간대 오프셋 | 시간 |
| $ .latitude | 지리적 위도 | 학위 |
| $ .longitude | 지리적 경도 | 학위 |
| $ .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.Ascension | 태양의 올바른 승천 | '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.Ascension | 달의 올바른 승천 | 'HH : MM : SS' |
| $ .moon.phase.name | 달 단계 이름 | New Moon, 왁스 칠, 1 분기, 왁싱 깁스, 보름달, 쇠약 한 gibbous, 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 |
+ -- ------------------+---------+----------------------+