Bagaimana cara membuat daftar catatan dengan tanggal dari 10 hari terakhir?


102
SELECT Table.date FROM Table WHERE date > current_date - 10;

Apakah ini berfungsi di PostgreSQL?

Jawaban:


192

Ya, ini berfungsi di PostgreSQL (dengan asumsi kolom " tanggal " adalah jenis data date) Mengapa Anda tidak mencobanya?

Format ANSI SQL standar adalah:

SELECT Table.date 
FROM Table 
WHERE date > current_date - interval '10' day;

Saya lebih suka format itu karena membuatnya lebih mudah dibaca (tetapi sama seperti current_date - 10).


1
Kueri harus: SELECT Table.date FROM Table WHERE date> current_date - interval '10 day ';
pengguna2694306

4
@ user2694306: interval '10 day'adalah sintaks Postgres. interval '10' dayadalah sintaks berdasarkan standar SQL dan juga didukung oleh Postgres
a_horse_with_no_name

1
interval harus 9 . 10 sebenarnya memberi Anda 11 hari yang lalu dari hari ini.
David He

1
@DavidHe: ini melakukan hal yang sama seperti jawaban aslinya. Yang menggunakan 10, bukan9
a_horse_with_no_name

3
Sekadar catatan: Di Redshift, formulasi @ user2694306 berfungsi: interval '10 hari '. interval '10' hari tidak berfungsi di Redshift.
Ben


9

Pemahaman saya dari pengujian saya (dan dox PostgreSQL ) adalah bahwa tanda kutip perlu dilakukan secara berbeda dari jawaban lain, dan juga harus menyertakan "hari" seperti ini:

SELECT Table.date
  FROM Table 
  WHERE date > current_date - interval '10 day';

Didemonstrasikan di sini (Anda seharusnya dapat menjalankan ini di Postgres db mana pun):

SELECT DISTINCT current_date, 
                current_date - interval '10' day, 
                current_date - interval '10 days' 
  FROM pg_language;

Hasil:

2013-03-01  2013-03-01 00:00:00 2013-02-19 00:00:00

Sebenarnya, saya melewatkan memperhatikan bahwa jawaban bradley benar. Bagaimanapun, saya akan meninggalkan milik saya di sini sebagai bukti bahwa itu cara yang benar. Jawaban yang diterima salah (setidaknya untuk versi Postgre I'm running)
Sangat Tidak Teratur

0

Saya akan memeriksa tipe data.

current_date memiliki tipe data "date", 10 adalah angka, dan Table.date - Anda perlu melihat tabel Anda.


0

Anda juga dapat menggunakan antara:

SELECT Table.date
  FROM Table 
  WHERE date between current_date and current_date - interval '10 day';

The betweenharus dengan nilai terendah pertama, jadi ini akan dilakukan dengan benar sebagai SELECT Table.date FROM Table WHERE date between current_date - interval '10 day' and current_date;
jenis

0

Cukup menggeneralisasi kueri jika Anda ingin bekerja dengan tanggal tertentu, bukan tanggal sekarang:

SELECT Table.date
  FROM Table 
  WHERE Table.date > '2020-01-01'::date - interval '10 day'
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.