Lewati ke konten utama

Menguasai Perbandingan Tanggal di SQL: Cara Mencari Tanggal yang Lebih Besar dari Tanggal Tertentu

Pelajari cara melakukan kueri dan memfilter tanggal yang lebih besar dari tanggal tertentu di SQL. Bandingkan bagaimana logika "lebih besar dari" berbeda di MySQL, PostgreSQL, dan SQL Server.
Diperbarui 5 Jun 2026  · 11 mnt baca

Memahami cara melakukan kueri untuk tanggal yang lebih besar dari tanggal tertentu sangat penting untuk manajemen dan analisis basis data yang efektif. Tutorial ini akan memberikan panduan menyeluruh untuk melakukan perbandingan tanggal di SQL pada berbagai sistem basis data SQL, termasuk SQL Server, PostgreSQL, dan Oracle. Baik Anda mengerjakan analisis data historis, pelaporan, maupun pemfilteran rekaman, menguasai teknik ini akan meningkatkan kemampuan Anda dalam melakukan kueri SQL.

Di akhir panduan ini, Anda akan mampu:

  • Memahami seluk-beluk format dan fungsi tanggal di berbagai basis data SQL, termasuk SQL Server, PostgreSQL, dan Oracle. 
  • Menerapkan contoh praktis pada skenario dunia nyata. 

Jika Anda seorang analis data atau data scientist yang siap belajar lebih jauh, saya merekomendasikan jalur keterampilan SQL Fundamentals dari DataCamp untuk membiasakan diri melakukan kueri data dari basis data. Dan bagi yang ingin memperluas keahlian basis data, lihat juga kursus Database Design, yang memberikan wawasan tentang membangun basis data yang efisien.

Pengantar Perbandingan Tanggal di SQL

Perbandingan tanggal penting dalam SQL karena memungkinkan profesional data memfilter dan mengurutkan data saat analisis. Metode ini sangat berguna dalam pelaporan keuangan atau manajemen inventaris yang memerlukan analisis tren.

Operator ‘lebih besar dari’ (>) di SQL digunakan bersama tanggal untuk membandingkan dua nilai tanggal. Saat Anda menyertakan operator ‘lebih besar dari’ dalam kueri SQL dengan tanggal, kueri akan mengembalikan rekaman dengan tanggal yang lebih akhir daripada tanggal yang ditentukan. Misalnya, kueri di bawah ini akan mengembalikan baris di tabel Orders di mana OrderDate lebih akhir dari 2023-01-01.

SELECT *
FROM Orders
WHERE OrderDate > '2023-01-01';

Mari mulai dengan meninjau cepat operator SQL dasar yang dapat digunakan untuk memfilter data. Operator-operator ini juga dibahas dalam SQL Basics Cheat Sheet kami, yang dapat Anda baca sebelum mencoba contoh di bawah.

Sama dengan (=)

Operator = digunakan di SQL untuk membandingkan apakah dua nilai sama. Berikut contoh saat operator digunakan dengan nilai tanggal. Kueri SQL akan mengembalikan baris di tabel Orders di mana OrderDate sama dengan 2023-01-01.

-- Select all orders placed on January 1, 2023
SELECT *
FROM Orders
WHERE OrderDate = '2023-01-01';

Tidak sama dengan (!= atau <>)

Operator != atau <> membandingkan dua nilai dan mengembalikan nilai yang tidak sama dengan nilai referensi. Misalnya, ketika digunakan dengan nilai tanggal, operator != atau <> akan mengembalikan baris yang tidak sama dengan tanggal yang dirujuk. Anda juga dapat membaca tutorial SQL NOT EQUAL Operator: A Beginner's Guide kami untuk mempelajari seluk-beluknya.

-- Select all orders that were not placed on January 1, 2023
SELECT *
FROM Orders
WHERE OrderDate != '2023-01-01';
-- Alternative syntax using <>
SELECT *
FROM Orders
WHERE OrderDate <> '2023-01-01';

Lebih kecil dari (<)

Operator < digunakan di SQL untuk memeriksa apakah nilai di sebelah kiri lebih kecil dari nilai di sebelah kanan. Saat digunakan dalam kueri SQL dengan nilai tanggal, kueri akan mengembalikan rekaman dengan tanggal yang lebih awal daripada tanggal yang ditentukan. Misalnya, kueri di bawah ini akan mengembalikan baris di tabel Orders di mana OrderDate lebih awal dari 2023-01-01.

-- Select all orders placed before January 1, 2023
SELECT *
FROM Orders
WHERE OrderDate < '2023-01-01';

Lebih besar dari atau sama dengan (>=)

Operator >= memeriksa apakah nilai di sebelah kiri operator lebih besar dari atau sama dengan nilai di sebelah kanan. Saat operator digunakan di SQL untuk mengkueri nilai tanggal, operator akan mengembalikan rekaman di mana nilai tanggal hanya yang sama dengan atau lebih besar dari nilai yang dirujuk.

-- Select all orders placed on or after January 1, 2023
SELECT *
FROM Orders
WHERE OrderDate >= '2023-01-01';

Lebih kecil dari atau sama dengan (<=)

Operator <= digunakan di SQL untuk memeriksa apakah nilai di sebelah kiri operator lebih kecil atau sama dengan nilai di sebelah kanan. Saat operator digunakan untuk mengkueri nilai tanggal, operator akan mengembalikan rekaman di mana nilai tanggal hanya yang sama dengan atau lebih kecil dari nilai yang dirujuk.

-- Select all orders placed on or before January 1, 2023
SELECT *
FROM Orders
WHERE OrderDate <= '2023-01-01';

Perbandingan Tanggal di SQL Server

Kita dapat membandingkan tanggal di SQL Server menggunakan operator berikut: <, <=, >, >=, dan =. Namun, kita akan membahas hal-hal berikut:

Menggunakan operator ‘lebih besar dari’ (>)

Operator ‘lebih besar dari’ (>) digunakan di SQL Server untuk menyaring tanggal yang lebih akhir daripada tanggal yang dibandingkan di sisi kanan operator. Misalnya, kueri di bawah ini memfilter tabel Orders dan mengembalikan rekaman pesanan yang dilakukan setelah OrderDate 2023-01-01.

-- Select all orders delivered after January 1, 2023
SELECT *
FROM Orders
WHERE DeliveryDate > '2023-01-01';

Menggunakan fungsi GETDATE()

Fungsi GETDATE() di SQL Server mengembalikan tanggal saat ini sebagaimana tercatat di sistem pengguna. Oleh karena itu, Anda dapat menggunakan fungsi ini untuk mengkueri data dan menyaring baris dengan tanggal yang lebih besar dari tanggal saat ini.

-- Select all orders delivered after the current date and time
SELECT *
FROM Orders
WHERE DeliveryDate > GETDATE();

Menggunakan BETWEEN untuk rentang tanggal

Operator BETWEEN di SQL digunakan untuk menyaring nilai di antara suatu rentang. Saat digunakan di SQL Server dengan tanggal, Anda dapat memfilter baris yang berisi tanggal dalam rentang yang disebutkan. Hasilnya akan menyertakan tanggal awal dan akhir sebagaimana ditulis dalam kueri.

-- Select all orders delivered between January 1, 2023, and December 31, 2023
SELECT *
FROM Orders
WHERE DeliveryDate BETWEEN '2023-01-01' AND '2023-12-31';

Menggunakan CAST dan CONVERT untuk rentang tanggal

Anda juga dapat menggunakan fungsi CAST dan CONVERT untuk mencegah kesalahan. Fungsi-fungsi ini memastikan bahwa nilai tanggal ditafsirkan dan diformat dengan benar.

-- Convert a string to a date
SELECT CAST('2023-06-26' AS DATE) AS ConvertedDate;

-- Convert a string to a datetime
SELECT CAST('2023-06-26 14:30:00' AS DATETIME) AS ConvertedDateTime;
-- Convert a string to a date using CONVERT
SELECT CONVERT(DATE, '2023-06-26') AS ConvertedDate;

-- Convert a string to a datetime using CONVERT
SELECT CONVERT(DATETIME, '2023-06-26 14:30:00') AS ConvertedDateTime;

Perbandingan Tanggal di PostgreSQL

PostgreSQL memiliki beberapa klausa berbeda yang digunakan untuk membandingkan tanggal. Kami membahas beberapa di antaranya di bawah ini.

Menggunakan operator ‘lebih besar dari’ (>)

Serupa dengan basis data SQL Server, operator > di PostgreSQL menyaring tanggal yang lebih besar daripada tanggal pembanding.

-- Select all orders placed after January 1, 2023
SELECT *
FROM Orders
WHERE OrderDate > '2023-01-01';

Menggunakan fungsi EXTRACT

Fungsi EXTRACT digunakan di PostgreSQL untuk mengambil bidang tanggal seperti tahun, bulan, atau hari. Pada kueri di bawah ini, klausa EXTRACT menyaring rekaman untuk TAHUN 2023.

-- Select all orders placed in the year 2023
SELECT *
FROM Orders
WHERE EXTRACT(YEAR FROM OrderDate) = 2023;

Menggunakan fungsi INTERVAL

Fungsi INTERVAL digunakan di PostgreSQL untuk melakukan beberapa perhitungan tanggal. INTERVAL memungkinkan Anda menambah atau mengurangi jumlah waktu tertentu ke/dari suatu tanggal.

-- Select all orders placed in the last 30 days
SELECT *
FROM Orders
-- Filter orders placed within the last 30 days from the current date
WHERE OrderDate > NOW() - INTERVAL '30 days';

Menggunakan fungsi DATE_PART

Fungsi DATE_PART memungkinkan Anda mengekstrak subbidang dari nilai tanggal. Subbidang ini bisa berupa tanggal atau waktu. Kueri di bawah ini mengembalikan pesanan yang dibuat pada bulan Maret, memberikan nilai presisi ganda 3 untuk bulan ketiga.

-- Select all orders placed in March
SELECT *
FROM Orders
WHERE DATE_PART('month', OrderDate) = 3;

Menggunakan fungsi TO_DATE

Fungsi TO_DATE di PostgreSQL mengonversi string tertentu menjadi nilai tanggal berdasarkan format yang diberikan. Pada kueri di bawah ini, nilai tanggal diberikan sebagai string. Jadi Anda mengonversinya menjadi tanggal dengan format YYYY-MM-DD.

-- Select all orders placed on January 1, 2023, using a string date
SELECT *
FROM Orders
WHERE OrderDate = TO_DATE('2023-01-01', 'YYYY-MM-DD');

Menggunakan BETWEEN untuk rentang tanggal

Seperti SQL Server, klausa BETWEEN di PostgreSQL menyaring data dalam rentang tertentu. Untuk nilai yang berisi tanggal, fungsi BETWEEN menyaring dan mengembalikan baris di antara tanggal yang ditunjukkan. Tanggal-tanggal ini juga disertakan dalam hasil.

-- Select all orders placed between January 1, 2023, and December 31, 2023
SELECT *
FROM Orders
WHERE OrderDate BETWEEN '2023-01-01' AND '2023-12-31';

Perbandingan Tanggal di Oracle

Menggunakan operator ‘lebih besar dari’ (>)

Operator > menyaring tanggal yang lebih akhir daripada tanggal pembanding.

-- Select all active users with an end date in the future
SELECT *
FROM Users
-- Filter users with status 'Active'
WHERE Status = 'Active'
  -- Ensure the end date is in the future
  AND EndDate > SYSDATE;

Menangani tanggal NULL dan kondisi kompleks

Saat membandingkan tanggal di basis data Oracle, penting untuk menentukan skenario kompleks, seperti tanggal kosong. Dalam kasus ini, kita menggunakan klausa IS NULL untuk menyaring rekaman tanpa tanggal.

-- Select all active users with either a future end date or no end date (NULL)
SELECT *
FROM Users
-- Filter users with status 'Active'
WHERE Status = 'Active'
  -- Ensure the end date is either in the future or is NULL (no end date)
  AND (EndDate > SYSDATE OR EndDate IS NULL);

Menggunakan BETWEEN untuk rentang tanggal

Klausa BETWEEN juga digunakan di Oracle untuk menyaring data dalam rentang tertentu. Untuk nilai yang berisi tanggal, fungsi BETWEEN menyaring dan mengembalikan rekaman di antara tanggal yang ditunjukkan. Tanggal-tanggal ini juga disertakan dalam hasil.

-- Select all active users with an end date between the current date and a specified future date (e.g., end of the year)
SELECT *
FROM Users
-- Filter users with status 'Active'
WHERE Status = 'Active'
  -- Ensure the end date is between the current date and a specified future date (e.g., December 31, 2023)
  AND EndDate BETWEEN SYSDATE AND DATE '2023-12-31';

Jebakan Umum dan Praktik Terbaik

Saya pernah menemui masalah terkait tanggal dan operator ‘lebih besar dari’ di SQL. Berikut beberapa kesalahan umum yang saya temukan serta kiat untuk menghindarinya.

Format tanggal yang tidak konsisten

Menggunakan format tanggal yang tidak konsisten dalam kueri Anda akan menyebabkan kesalahan. Anda mungkin tidak mendapatkan hasil yang diinginkan jika mencampur format tanggal seperti YYYY-MM-DD dan MM-DD-YYYY

Untuk menghindari masalah ini, pastikan selalu menggunakan format tanggal standar. Anda juga dapat mengonversi tanggal ke format pilihan Anda atau sesuai konvensi lokal menggunakan TO_DATE di basis data PostgreSQL atau Oracle. Untuk SQL Server, Anda dapat menggunakan fungsi CAST dan CONVERT.

-- Convert a string to a date
SELECT CAST('2023-06-26' AS DATE) AS ConvertedDate;

-- Convert a string to a datetime
SELECT CAST('2023-06-26 14:30:00' AS DATETIME) AS ConvertedDateTime;
-- Convert a string to a date using CONVERT
SELECT CONVERT(DATE, '2023-06-26') AS ConvertedDate;

-- Convert a string to a datetime using CONVERT
SELECT CONVERT(DATETIME, '2023-06-26 14:30:00') AS ConvertedDateTime;

Penanganan zona waktu

Anda mungkin mendapatkan hasil yang tidak akurat saat menangani data lintas beberapa zona waktu. Selain itu, tidak mempertimbangkan perbedaan zona waktu saat konversi tanggal dapat menyebabkan kesalahan.

Karena itu, saya menyarankan untuk menyimpan tanggal Anda dalam UTC (Coordinated Universal Time) dan menggunakan fungsi zona waktu bawaan untuk melakukan konversi tanggal.

-- Store dates in UTC and convert to local time zone
SELECT *
FROM Orders
-- Filter orders where the OrderDate in UTC is greater than the current date in the 'America/New_York' time zone
WHERE OrderDate AT TIME ZONE 'UTC' > SYSDATE AT TIME ZONE 'America/New_York';
-- Use time zone functions for accurate comparison
SELECT *
FROM Users
-- Filter users where the EndDate in UTC is greater than the current date in UTC
WHERE EndDate AT TIME ZONE 'UTC' > SYSDATE AT TIME ZONE 'UTC';

Menghindari kesalahan umum dengan tanggal

Saat bekerja dengan tanggal, penting untuk menghindari kesalahan dengan hanya mengambil nilai yang Anda perlukan dalam analisis. Misalnya, Anda dapat menghilangkan komponen waktu pada nilai tanggal jika tidak relevan untuk analisis Anda. Tangani nilai NULL secara eksplisit untuk mencegah kesalahan, terutama ketika nilai tanggal mungkin mengandungnya.

Anda mungkin mendapati diri menulis kueri yang kompleks dan bersarang, sehingga sulit dibaca dan diikuti berbagai klausanya. Demikian pula, tidak menyertakan komentar dalam kode membuatnya sulit dijelaskan.

Karena itu, saya menyarankan Anda menyertakan komentar yang menjelaskan logika di balik klausanya. Untuk membuat kueri mudah dibaca, Anda juga dapat menggunakan subkueri sederhana atau Common Table Expressions (CTE). Lihat kursus Reporting in SQL kami untuk mempelajari lebih lanjut cara menulis kueri yang mudah dibaca dan dipelihara untuk analisis dan pelaporan.

Catatan tentang Alasan Metode SQL Berbeda

Keragaman metode SQL untuk perbandingan tanggal di berbagai sistem basis data seperti SQL Server, PostgreSQL, dan Oracle muncul dari evolusi dan filosofi desain masing-masing sistem manajemen basis data. Setiap sistem dikembangkan secara independen dan memenuhi kebutuhan pengguna serta persyaratan kompatibilitas yang berbeda, yang mengarah pada implementasi standar SQL yang bervariasi dan fitur proprietari tambahan.

Contohnya:

  • SQL Server, yang dikembangkan oleh Microsoft, menggabungkan fungsi dan sintaks yang selaras erat dengan produk Microsoft lainnya, dengan tujuan integrasi dan kemudahan penggunaan dalam ekosistem Windows.
  • PostgreSQL adalah proyek open source dengan penekanan kuat pada ekstensibilitas. Fleksibilitas ini mendorong beragam fungsi dan operator tanggal yang dapat dioptimalkan atau diperluas oleh komunitasnya.
  • Oracle umumnya berfokus pada skalabilitas dan keandalan tinggi untuk aplikasi enterprise, sehingga mendorong optimalisasi spesifik dalam cara penanganan tanggal dan tipe data lainnya, sering dengan fokus pada lingkungan transaksi yang kompleks dan ber-volume tinggi.

Kesimpulan

Saya mendorong Anda untuk mempraktikkan berbagai keterampilan ini agar tahu kapan menerapkan fungsi SQL dalam skenario dunia nyata. Pertimbangkan untuk mengikuti kursus SQL Fundamentals dan Intermediate SQL dari DataCamp. Saya juga merekomendasikan jalur Associate Data Analyst in SQL bagi calon analis data dan data scientist untuk membantu Anda menguasai berbagai teknik analisis. Kursus-kursus ini juga akan membantu Anda mempersiapkan Sertifikasi SQL Associate, yang bagus untuk dicantumkan di resume. 


Allan Ouko's photo
Author
Allan Ouko
LinkedIn
Penulis teknis Data Science dengan pengalaman langsung dalam analitik data, business intelligence, dan data science. Saya menulis konten praktis berfokus industri tentang SQL, Python, Power BI, Databricks, dan rekayasa data, yang berakar pada pekerjaan analitik dunia nyata. Tulisan saya menjembatani kedalaman teknis dan dampak bisnis, membantu para profesional mengubah data menjadi keputusan yang meyakinkan.

Pertanyaan yang Sering Diajukan

Apa itu operator perbandingan?

Operator perbandingan membandingkan dua nilai dan mengembalikan hasil apakah nilai tersebut bernilai benar atau salah terhadap nilai yang dibandingkan.

Apa saja operator umum yang digunakan pada nilai tanggal di SQL?

Operator umum yang digunakan pada nilai tanggal di SQL meliputi sama dengan (=), lebih besar dari (>), lebih kecil dari (<), lebih besar dari atau sama dengan (>=), lebih kecil dari atau sama dengan (<=).

Kapan operator BETWEEN digunakan di SQL?

Operator BETWEEN digunakan untuk menyaring rekaman dalam rentang tertentu.

Operator apa yang harus saya gunakan jika tanggal saya memiliki nilai NULL?

Anda harus menyertakan klausa IS NULL untuk menangani nilai null dan menghindari kesalahan pada hasil kueri.

Apa yang harus saya lakukan jika kueri SQL saya menghasilkan kesalahan saat memfilter nilai tanggal?

Periksa untuk memastikan tanggal Anda dalam format yang benar. Jika tidak, konversikan ke format yang konsisten seperti YYYY-MM-DD.

Topik

Belajar SQL bersama DataCamp

Kursus

Pengantar SQL

2 Hr
1.6M
Pelajari cara membuat dan mengakses basis data relasional menggunakan SQL dalam waktu hanya dua jam.
Lihat DetailRight Arrow
Mulai Kursus
Lihat Lebih BanyakRight Arrow
Terkait

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat Lebih BanyakLihat Lebih Banyak