พื้นที่เก็บข้อมูลนี้มีซอร์สโค้ดสำหรับไลบรารีฟังก์ชัน mySQL loadable (ก่อนหน้านี้เรียกว่า UDF - ฟังก์ชั่นที่ผู้ใช้กำหนด) ซึ่งให้ฟังก์ชัน Additonal SQL Astrononmy เพื่อรับข้อมูล Astro Sun และ Moon สำหรับตำแหน่งและเวลาทางภูมิศาสตร์ที่กำหนด
การคำนวณจะขึ้นอยู่กับการปรับตัวของคลาสดาราศาสตร์ C ++ จาก esp32-astronomie
ถ้าคุณชอบ lib_mysqludf_astro ให้ดาวหรือส้อม:
จากไดเรกทอรีพื้นฐานรัน:
make clean
make
sudo make installสิ่งนี้จะสร้างและติดตั้งไฟล์ไลบรารี
ในการสร้างเวอร์ชันเฉพาะประเทศให้เรียกใช้คำสั่งด้วยพารามิเตอร์ lang = -dlang_xx โดยที่ xx เป็นรหัสประเทศ: de = ภาษาเยอรมัน, ES = สเปน, fr = ฝรั่งเศส, มัน = อิตาลี, nl = เนเธอร์แลนด์, en = ภาษาอังกฤษ (ค่าเริ่มต้น)
ตัวอย่าง: สร้างและติดตั้งการใช้ไบนารีดัตช์
make clean
make LANG=-DLANG_NL
sudo make install ในที่สุดเราก็เปิดใช้งานฟังก์ชั่นการโหลดได้ใน MySQL Server (แทนที่ username โดยผู้ใช้ MySQL ในเครื่องซึ่งมีสิทธิ์ในการสร้างฟังก์ชั่นเช่นรูท)
mysql -u username -p < install.sqlหากต้องการถอนการติดตั้งฟังก์ชั่นการโหลดได้ก่อนในเซิร์ฟเวอร์ MySQL ของคุณโดยใช้แบบสอบถาม SQL:
DROP FUNCTION IF EXISTS astro_info;
DROP FUNCTION IF EXISTS astro;จากนั้นถอนการติดตั้งไลบรารีโดยใช้บรรทัดคำสั่ง:
sudo make uninstallส่งคืนข้อมูล Astro สำหรับวันที่กำหนดตำแหน่งทางภูมิศาสตร์และเขตเวลาเป็นสตริง 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 | Greenwich Sidereal Time | 'HH: MM: SS' |
| $ .lmst | เวลาดาวฤกษ์ท้องถิ่น | 'HH: MM: SS' |
| $ .sun.distance.earth | ระยะทางไปยังดวงอาทิตย์ (ศูนย์กลางของโลก) | กม. |
| $ .sun.distance.observer | ระยะทางไปยังดวงอาทิตย์ (จากผู้สังเกตการณ์) | กม. |
| $ .sun.ecliptic | ความยาวสุริยุปราคาของดวงอาทิตย์ | องศา |
| $ .sun.declination | การลดลงของดวงอาทิตย์ | องศา |
| $ .sun.azimuth | Azimuth of the Sun | องศา |
| $ .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 | ระยะทางสู่ดวงจันทร์ (ศูนย์กลางของโลก) | กม. |
| $ .moon.distance.observer | ระยะทางสู่ดวงจันทร์ (จากผู้สังเกตการณ์) | กม. |
| $ .moon.ecliptic.latitude | ละติจูดสุริยุปราคาของดวงจันทร์ | องศา |
| $ .moon.ecliptic.longitude | ลองจิจูดของดวงจันทร์ | องศา |
| $. moon.declination | การลดลงของดวงจันทร์ | องศา |
| $ .moon.azimuth | Azimuth of the Moon | องศา |
| $ .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 | ชื่อเฟสดวงจันทร์ | ดวงจันทร์ใหม่, แว็กซ์เสี้ยว, ไตรมาสแรก, แว็กซ์ gibbous, พระจันทร์เต็มดวง, จางหาย |
| $ .moon.phase.value | เฟสดวงจันทร์เป็นดัชนี | 0..7 |
| $ .moon.phase.number | Age of Moon In ตั้งแต่ New Moon (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 "
}
}รับ Sun Rise/Set
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 |
+ -- ------------------+---------+----------------------+