EXTRACT, DATE_TRUNC, AGE
Keluarkan bahagian tarikh dengan EXTRACT, bundarkan cap masa kepada sempadan dengan DATE_TRUNC dan kira perbezaan yang mudah difahami dengan AGE.
EXTRACT, DATE_TRUNC, AGE ialah pelajaran SQL Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran SQL Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus SQL Academy merangkumi sejumlah 4 pelajaran.
EXTRACT: Mengambil Bahagian Tarikh
EXTRACT(part FROM ts) mengembalikan satu komponen berangka:
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;Bahagian EXTRACT yang Biasa
Bahagian 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: Menyelaraskan kepada Sempadan
DATE_TRUNC(unit, ts) menetapkan semua bahagian di bawah unit kepada sifar — fungsi yang paling berguna untuk laporan berkelompok:
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 Berkelompok
Hasil bulanan menggunakan date_trunc:
SELECT date_trunc('month', created_at) AS month,
SUM(total) AS revenue
FROM orders
GROUP BY 1
ORDER BY 1;Tahun hingga Kini / Bulan hingga Kini
Bandingkan tempoh semasa 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: Perbezaan Berasaskan Kalendar
AGE mengembalikan tahun + bulan + hari, bukan hari sahaja:
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')); -- 3Tingkah Laku AGE dengan Dua Argumen
AGE dengan satu argumen membandingkan dengan current_date:
SELECT AGE(birth_date) FROM users LIMIT 5;Logik Hari dalam Minggu
EXTRACT(DOW): 0=Ahad … 6=Sabtu. ISO_DOW: 1=Isnin … 7=Ahad.
SELECT * FROM orders
WHERE EXTRACT(ISODOW FROM created_at) IN (6, 7); -- weekend ordersZon Masa dalam EXTRACT
EXTRACT pada TIMESTAMPTZ menggunakan zon masa sesi. Gunakan AT TIME ZONE untuk mengawalnya:
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;Memangkas Mengikut Tetingkap Tersuai
Untuk tetingkap bukan kalendar (setiap 5 minit), gunakan aritmetik:
SELECT to_timestamp(
floor(EXTRACT(EPOCH FROM created_at) / 300) * 300
) AS bucket_5min,
COUNT(*)
FROM events
GROUP BY 1
ORDER BY 1;Indeks Fungsian untuk Pemangkasan
Jika anda kerap menggunakan GROUP BY date_trunc('day', created_at), indeks fungsian dapat membantu:
CREATE INDEX events_day_idx ON events ((date_trunc('day', created_at)));Ringkasan
EXTRACT + DATE_TRUNC + AGE merangkumi kebanyakan keperluan pelaporan.
- EXTRACT untuk bahagian individu
- DATE_TRUNC untuk menyelaraskan kepada sempadan
- AGE untuk tempoh berasaskan kalendar
Semakan Pantas
Anda mahu mendapatkan kiraan bulanan pengguna baharu. Fungsi manakah yang mengelompokkan tarikh mengikut bulan?
Pelajari SQL dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 46
- Pelajaran
- 183
Soalan Lazim
Adakah pelajaran “EXTRACT, DATE_TRUNC, AGE” percuma?
Ya — teks penuh “EXTRACT, DATE_TRUNC, AGE” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus SQL Academy, tingkat taraf kepada CoddyKit PRO. Kursus SQL Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “EXTRACT, DATE_TRUNC, AGE”?
Keluarkan bahagian tarikh dengan EXTRACT, bundarkan cap masa kepada sempadan dengan DATE_TRUNC dan kira perbezaan yang mudah difahami dengan AGE. Anda berlatih SQL Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan SQL Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran SQL Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “EXTRACT, DATE_TRUNC, AGE” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran SQL Academy ini?
Ya. Setiap pelajaran SQL Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Aritmetik Tarikh dan INTERVAL
- EXTRACT, DATE_TRUNC, AGE
- Zon Waktu: TIMESTAMP berbanding TIMESTAMPTZ
- Laporan Tarikh Biasa (MTD, WoW, YoY)