0Pricing
SQL Academy · บทเรียน

การคำนวณวันที่และ 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-30

CURRENT_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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การคำนวณวันที่และ INTERVAL
  2. EXTRACT, DATE_TRUNC, AGE
  3. เขตเวลา: TIMESTAMP เทียบกับ TIMESTAMPTZ
  4. รายงานวันที่ที่พบบ่อย (MTD, WoW, YoY)
← กลับไปที่ SQL Academy