การคำนวณวันที่และ INTERVAL
บวกและลบวันที่ด้วย INTERVAL คำนวณระยะเวลา และสร้างตัวกรองวันที่สัมพัทธ์ เช่น “7 วันที่ผ่านมา”
การคำนวณวันที่และ INTERVAL เป็นบทเรียน SQL Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน SQL Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน
สรุปทบทวนชนิดวันที่และเวลา
ชนิดข้อมูลเกี่ยวกับเวลาหลักสี่ชนิดใน PostgreSQL:
DATE— วันตามปฏิทิน ไม่มีเวลาTIME— เวลาของวันTIMESTAMP— วันที่ + เวลา ไม่มีเขตเวลาTIMESTAMPTZ— วันที่ + เวลา + เขตเวลา (แนะนำสำหรับเหตุการณ์)
INTERVAL: ช่วงเวลา
INTERVAL คือระยะเวลา คุณสามารถบวกหรือลบกับวันที่หรือประทับเวลาได้:
SELECT NOW() + INTERVAL '1 day';
SELECT NOW() - INTERVAL '30 days';
SELECT NOW() + INTERVAL '3 months 2 weeks';
SELECT INTERVAL '1 hour' + INTERVAL '15 minutes';หน่วยของ INTERVAL
คุณสามารถใช้ year, month, week, day, hour, minute, second ได้ (ทั้งรูปเอกพจน์หรือพหูพจน์):
SELECT INTERVAL '2 years 6 months';
SELECT INTERVAL '1 week';
SELECT INTERVAL '90 seconds';ตัวกรองวันที่แบบสัมพันธ์ที่ใช้บ่อย
คำค้นหาแบบ "N วันที่ผ่านมา" ที่ใช้เป็นพื้นฐาน:
SELECT * FROM orders
WHERE created_at >= NOW() - INTERVAL '7 days';
SELECT * FROM events
WHERE created_at >= CURRENT_DATE - INTERVAL '1 month';การเพิ่มวันให้กับ DATE
PostgreSQL ยังอนุญาตให้ใช้ date + integer ในความหมายว่า "เพิ่ม N วัน" ได้:
SELECT DATE '2024-01-01' + 30; -- 2024-01-31
SELECT DATE '2024-01-01' - 1; -- 2023-12-31การลบ TIMESTAMP สองค่า
ผลต่างของประทับเวลาสองค่าคือ INTERVAL:
SELECT NOW() - '2024-01-01'::TIMESTAMP;
-- → '125 days 14:30:00'
SELECT EXTRACT(EPOCH FROM (NOW() - created_at))/3600 AS hours_ago
FROM events;AGE: ผลต่างที่อ่านเข้าใจได้
AGE(end, start) ส่งคืน INTERVAL ในหน่วยปี-เดือน-วัน:
SELECT AGE(NOW(), birth_date) AS age_interval
FROM users WHERE id = 1;
SELECT EXTRACT(YEAR FROM AGE(birth_date)) AS age_in_years
FROM users;การเพิ่มเดือน — โปรดระวัง
การเพิ่มเดือนเป็นการคำนวณตามปฏิทิน 2024-01-31 + 1 month = 2024-02-29 (ปรับให้ไม่เกินวันสุดท้ายของเดือน):
SELECT DATE '2024-01-31' + INTERVAL '1 month'; -- 2024-02-29
SELECT DATE '2024-03-31' + INTERVAL '1 month'; -- 2024-04-30CURRENT_DATE เทียบกับ NOW()
ชนิดค่าที่ส่งคืนแตกต่างกัน — เลือกใช้ให้เหมาะกับงาน:
SELECT CURRENT_DATE; -- 2024-03-15 (DATE)
SELECT CURRENT_TIME; -- 14:30:00+02 (TIMETZ)
SELECT CURRENT_TIMESTAMP; -- 2024-03-15 14:30:00+02 (TIMESTAMPTZ)
SELECT NOW(); -- alias for CURRENT_TIMESTAMPการสร้างวันที่จากส่วนประกอบ
สร้างวันที่จากคอลัมน์จำนวนเต็ม:
SELECT MAKE_DATE(year, month, day) FROM birthdays;
SELECT MAKE_TIMESTAMP(2024, 3, 15, 14, 30, 0.0);ดัชนีบนนิพจน์วันที่
ดัชนีบน created_at รองรับคำค้นหาแบบช่วงได้ดี สำหรับ "เหตุการณ์ในเดือนมีนาคม" การกรองด้วยช่วงจะเร็วกว่าการตัดให้เหลือเดือน:
-- Index-friendly:
WHERE created_at >= '2024-03-01' AND created_at < '2024-04-01';
-- Less friendly (works only with expression index):
WHERE date_trunc('month', created_at) = '2024-03-01';สรุปทบทวน
การคำนวณวันที่ใน SQL มีความสามารถหลากหลายและเชื่อถือได้
- ใช้ INTERVAL สำหรับระยะเวลา
- บวกหรือลบได้โดยตรง
- ใช้ AGE สำหรับช่วงเวลาที่อ่านเข้าใจได้
- ช่วงแบบเปิดด้านขวาเหมาะกับดัชนีมากที่สุด
ตรวจสอบความเข้าใจ
นิพจน์ใดส่งคืนเหตุการณ์ในช่วง 7 วันที่ผ่านมา
คำถามที่พบบ่อย
บทเรียน “การคำนวณวันที่และ INTERVAL” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การคำนวณวันที่และ INTERVAL” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส SQL Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การคำนวณวันที่และ INTERVAL”
บวกและลบวันที่ด้วย INTERVAL คำนวณระยะเวลา และสร้างตัวกรองวันที่สัมพัทธ์ เช่น “7 วันที่ผ่านมา” คุณปฏิบัติ SQL Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน SQL Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน SQL Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “การคำนวณวันที่และ INTERVAL” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน SQL Academy นี้ได้ไหม
ได้ บทเรียน SQL Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การคำนวณวันที่และ INTERVAL
- EXTRACT, DATE_TRUNC, AGE
- เขตเวลา: TIMESTAMP เทียบกับ TIMESTAMPTZ
- รายงานวันที่ที่พบบ่อย (MTD, WoW, YoY)