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?

biarawati
sumber

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).

seekor kuda tanpa nama
sumber
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
Sangat Tidak Teratur
sumber
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.

Scherbius.com
sumber
0

Anda juga dapat menggunakan antara:

SELECT Table.date
  FROM Table 
  WHERE date between current_date and current_date - interval '10 day';
Jacks Nogueira
sumber
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'
16180
sumber