0Pricing
SQL Academy · Pelajaran

EXTRACT, DATE_TRUNC, AGE

Ambil bagian tanggal dengan EXTRACT, bulatkan stempel waktu ke batas tertentu dengan DATE_TRUNC, dan hitung selisih yang mudah dibaca dengan AGE.

EXTRACT, DATE_TRUNC, AGE adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar SQL Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Academy mencakup 4 pelajaran total.

EXTRACT: Mengambil Bagian Tanggal

EXTRACT(part FROM ts) mengembalikan satu komponen numerik:

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;

Bagian EXTRACT yang Umum

Bagian yang berguna: 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: Membulatkan ke Batas

DATE_TRUNC(unit, ts) mengosongkan semua bagian di bawah satuan tersebut — fungsi yang paling berguna untuk laporan berbasis kelompok:

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());

Laporan Berbasis Kelompok

Pendapatan bulanan menggunakan date_trunc:

SELECT date_trunc('month', created_at) AS month,
       SUM(total) AS revenue
FROM orders
GROUP BY 1
ORDER BY 1;

Dari Awal Tahun / Dari Awal Bulan

Bandingkan periode saat ini dengan titik yang sama pada tahun lalu:

-- 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: Selisih yang Memperhitungkan Kalender

AGE mengembalikan tahun + bulan + hari, bukan hanya hari:

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

Perilaku AGE dengan Dua Argumen

AGE dengan satu argumen membandingkan dengan current_date:

SELECT AGE(birth_date) FROM users LIMIT 5;

Logika Hari dalam Seminggu

EXTRACT(DOW): 0=Minggu … 6=Sabtu. ISO_DOW: 1=Senin … 7=Minggu.

SELECT * FROM orders
WHERE EXTRACT(ISODOW FROM created_at) IN (6, 7);  -- weekend orders

Zona Waktu dalam EXTRACT

EXTRACT pada TIMESTAMPTZ menggunakan zona waktu sesi. Gunakan AT TIME ZONE untuk mengendalikannya:

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;

Memotong Berdasarkan Jendela Kustom

Untuk jendela nonkalender (setiap 5 menit), gunakan aritmetika:

SELECT to_timestamp(
  floor(EXTRACT(EPOCH FROM created_at) / 300) * 300
) AS bucket_5min,
COUNT(*)
FROM events
GROUP BY 1
ORDER BY 1;

Indeks Fungsional untuk Pemotongan

Jika Anda sering menggunakan GROUP BY date_trunc('day', created_at), indeks fungsional akan membantu:

CREATE INDEX events_day_idx ON events ((date_trunc('day', created_at)));

Ringkasan

EXTRACT + DATE_TRUNC + AGE mencakup sebagian besar kebutuhan pelaporan.

  • EXTRACT untuk bagian individual
  • DATE_TRUNC untuk membulatkan ke batas
  • AGE untuk rentang yang memperhitungkan kalender

Pemeriksaan Singkat

Anda ingin menghitung pengguna baru setiap bulan. Fungsi mana yang mengelompokkan tanggal berdasarkan bulan?

Pertanyaan yang Sering Diajukan

Apakah pelajaran “EXTRACT, DATE_TRUNC, AGE” gratis?

Ya — teks lengkap “EXTRACT, DATE_TRUNC, AGE” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Academy, upgrade ke CoddyKit PRO. Kursus SQL Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “EXTRACT, DATE_TRUNC, AGE”?

Ambil bagian tanggal dengan EXTRACT, bulatkan stempel waktu ke batas tertentu dengan DATE_TRUNC, dan hitung selisih yang mudah dibaca dengan AGE. Kamu berlatih SQL Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai SQL Academy?

Tidak diperlukan pengalaman sebelumnya. SQL Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “EXTRACT, DATE_TRUNC, AGE” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran SQL Academy ini?

Ya. Setiap pelajaran SQL Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Aritmetika Tanggal dan INTERVAL
  2. EXTRACT, DATE_TRUNC, AGE
  3. Zona Waktu: TIMESTAMP vs TIMESTAMPTZ
  4. Laporan Tanggal Umum (MTD, WoW, YoY)
← Kembali ke SQL Academy