ฟังก์ชั่น MySQL/Mariadb เพื่อคำนวณเวลาพระอาทิตย์ขึ้น/พระอาทิตย์ตกตามวันที่และละติจูด/ลองจิจูด
การนำไปใช้นี้ใช้อัลกอริทึมที่พบใน http://web.archive.org/web/20161202180207/http://williams.best.vwh.net/sunrise_sunset_algorithm.htm
ตัวแปรที่ทรงพลังกว่าสามารถพบได้เป็นการใช้งานฟังก์ชั่นการโหลด MySQL ภายใต้ lib_mysqludf_astro
ดำเนินการรหัสของ sunriseset.sql ตัวอย่างเช่น
mysql -u <username> -p <yourdb> < SunRiseSet.sql
โทรหาฟังก์ชั่นพร้อมวันที่ตำแหน่งของคุณและเวลาที่คุณต้องการกลับมา (พระอาทิตย์ขึ้น, พระอาทิตย์ตก)
พารามิเตอร์คือ:
วันที่ดอกเบี้ย-รูปแบบวันที่ mysql yyyy-mm-dd
Location Latitude - Float
ลองจิจูดที่ตั้ง - ลอย
เป็นบวกสำหรับตะวันออกและลบสำหรับตะวันตก
จุดสุดยอดของดวงอาทิตย์สำหรับพระอาทิตย์ขึ้น/พระอาทิตย์ตก: enum ['ทางการ', 'พลเรือน', 'ทะเล', 'ดาราศาสตร์'] หรือลอยตัว
ผลลัพธ์ที่ต้องการ - enum ['พระอาทิตย์ขึ้น', 'Sunset']
แทนที่ละติจูด 0.0000 และลองจิจูด 0.0000 ด้วยการตั้งค่าในพื้นที่ของคุณ:
-- official sunset/sunrise
SELECT system.SunRiseSet(NOW(), 0.0000, 0.0000, 'official', 'sunset'), system.SunRiseSet(NOW(), 0.0000, 0.0000, 'official', 'sunrise');
SELECT system.SunRiseSet(NOW(), 0.0000, 0.0000, 90+(50/60), 'sunset'), system.SunRiseSet(NOW(), 0.0000, 0.0000, 90.833333333, 'sunrise');
-- civil
SELECT system.SunRiseSet(NOW(), 0.0000, 0.0000, 'civil', 'sunset'), system.SunRiseSet(NOW(), 0.0000, 0.0000, 'civil', 'rise');
SELECT system.SunRiseSet(NOW(), 0.0000, 0.0000, 96, 'sunset'), system.SunRiseSet(NOW(), 0.0000, 0.0000, 96, 'rise');
-- nautical
SELECT system.SunRiseSet(NOW(), 0.0000, 0.0000, 'nautical', 'set'), system.SunRiseSet(NOW(), 0.0000, 0.0000, 'nautical', 'rise');
-- astronomical
SELECT system.SunRiseSet(NOW(), 0.0000, 0.0000, 'astro', 'sunset'), system.SunRiseSet(NOW(), 0.0000, 0.0000, 'astro', 'sunrise');
-- self defined sun horizon level
SELECT system.SunRiseSet(NOW(), 0.0000, 0.0000, 86.2, 'sunset'), system.SunRiseSet(NOW(), 0.0000, 0.0000, 86.2, 'sunrise');