EXTRACT وDATE_TRUNC وAGE
استخرج أجزاء التاريخ باستخدام EXTRACT، وقرّب الطوابع الزمنية إلى حد زمني باستخدام DATE_TRUNC، واحسب الفروق بصيغة مفهومة باستخدام AGE.
EXTRACT وDATE_TRUNC وAGE درس مجاني في SQL Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SQL Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SQL Academy 4 دروس في المجموع.
EXTRACT: استخراج جزء من التاريخ
تعيد EXTRACT(part FROM ts) مكوّنًا رقميًا واحدًا:
SELECT EXTRACT(YEAR FROM created_at) AS yr,
EXTRACT(MONTH FROM created_at) AS mo,
EXTRACT(DAY FROM created_at) AS d,
EXTRACT(DOW FROM created_at) AS day_of_week
FROM orders;أجزاء EXTRACT الشائعة
الأجزاء المفيدة: YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, DOW (0=Sun), DOY (1–366), WEEK, QUARTER, EPOCH.
SELECT EXTRACT(EPOCH FROM (NOW() - created_at)) AS seconds_ago
FROM events;DATE_TRUNC: التقريب إلى حد
تصفّر DATE_TRUNC(unit, ts) كل ما هو أدنى من الوحدة المحددة — وهي الدالة الأكثر فائدة للتقارير المجمّعة حسب الفترات:
SELECT date_trunc('day', NOW()); -- 2024-03-15 00:00:00
SELECT date_trunc('week', NOW());
SELECT date_trunc('month', NOW());
SELECT date_trunc('hour', NOW());التقارير المجمّعة حسب الفترات
الإيرادات الشهرية باستخدام date_trunc:
SELECT date_trunc('month', created_at) AS month,
SUM(total) AS revenue
FROM orders
GROUP BY 1
ORDER BY 1;من بداية العام / من بداية الشهر حتى تاريخه
قارن الفترة الحالية بالنقطة نفسها من العام الماضي:
-- This month so far
SELECT SUM(total) FROM orders
WHERE created_at >= date_trunc('month', NOW())
AND created_at < date_trunc('month', NOW()) + INTERVAL '1 month';AGE: فرق يراعي التقويم
تعيد AGE السنوات والأشهر والأيام، وليس عدد الأيام فقط:
SELECT AGE('2024-03-15', '2020-12-01');
-- → '3 years 3 months 14 days'
SELECT EXTRACT(YEAR FROM AGE('2024-03-15', '2020-12-01')); -- 3سلوك AGE ذي الوسيطتين
تقارن AGE ذات الوسيط الواحد مع current_date:
SELECT AGE(birth_date) FROM users LIMIT 5;منطق يوم الأسبوع
EXTRACT(DOW): 0=الأحد … 6=السبت. ISO_DOW: 1=الاثنين … 7=الأحد.
SELECT * FROM orders
WHERE EXTRACT(ISODOW FROM created_at) IN (6, 7); -- weekend ordersالمنطقة الزمنية في EXTRACT
تستخدم EXTRACT مع TIMESTAMPTZ المنطقة الزمنية الخاصة بالجلسة. استخدم AT TIME ZONE للتحكم فيها:
SELECT EXTRACT(HOUR FROM created_at AT TIME ZONE 'UTC') FROM events;
SELECT EXTRACT(HOUR FROM created_at AT TIME ZONE 'Europe/Berlin') FROM events;الاقتطاع حسب نافذة مخصصة
بالنسبة إلى النوافذ غير التقويمية (كل 5 دقائق)، استخدم العمليات الحسابية:
SELECT to_timestamp(
floor(EXTRACT(EPOCH FROM created_at) / 300) * 300
) AS bucket_5min,
COUNT(*)
FROM events
GROUP BY 1
ORDER BY 1;الفهارس الوظيفية للاقتطاع
إذا كنت تستخدم date_trunc('day', created_at) في GROUP BY كثيرًا، فسيساعدك الفهرس الوظيفي:
CREATE INDEX events_day_idx ON events ((date_trunc('day', created_at)));مراجعة
يغطي EXTRACT وDATE_TRUNC وAGE معظم احتياجات إعداد التقارير.
- EXTRACT لاستخراج الأجزاء الفردية
- DATE_TRUNC للتقريب إلى حد
- AGE للفترات التي تراعي التقويم
تحقق سريع
تريد حسابًا شهريًا للمستخدمين الجدد. ما الدالة التي تجمع التواريخ حسب الشهر؟
الأسئلة الشائعة
هل درس «EXTRACT وDATE_TRUNC وAGE» مجاني؟
نعم — نص درس «EXTRACT وDATE_TRUNC وAGE» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SQL Academy، انتقل إلى CoddyKit PRO. تتضمن دورة SQL Academy 4 دروس في المجموع.
ماذا ستتعلم في «EXTRACT وDATE_TRUNC وAGE»؟
استخرج أجزاء التاريخ باستخدام EXTRACT، وقرّب الطوابع الزمنية إلى حد زمني باستخدام DATE_TRUNC، واحسب الفروق بصيغة مفهومة باستخدام AGE. تتمرن على SQL Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ SQL Academy؟
لا تُشترط خبرة سابقة. SQL Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «EXTRACT وDATE_TRUNC وAGE»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس SQL Academy هذا؟
نعم. كل درس في SQL Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- الحساب على التواريخ وINTERVAL
- EXTRACT وDATE_TRUNC وAGE
- المناطق الزمنية: TIMESTAMP مقابل TIMESTAMPTZ
- تقارير التواريخ الشائعة (MTD وWoW وYoY)