Son 10 güne ait kayıtlar nasıl listelenir?


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

Bu PostgreSQL üzerinde çalışıyor mu?

Yanıtlar:


199

Evet, bu PostgreSQL'de çalışıyor (" tarih " sütununun veri türünde olduğu varsayılarak date) Neden denemiyorsunuz?

Standart ANSI SQL biçimi şöyle olacaktır:

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

Okumayı kolaylaştırdığı için bu biçimi tercih ederim (ama aynıdır current_date - 10).


1
Sorgu şöyle olmalıdır: Tablo tarihini SEÇİN TABLOSU NEREDE tarih> geçerli_tarih - aralık '10 gün ';
user2694306

5
@ user2694306: interval '10 day'Postgres sözdizimidir. interval '10' daySQL standardına dayalı sözdizimidir ve ayrıca Postgres tarafından da desteklenir
a_horse_with_no_name

1
aralık 9 olmalıdır . 10 aslında bugünden itibaren 11 gün geri veriyor.
David He

1
@DavidHe: Bu, orijinal cevapla aynı şeyi yapıyor. Hangi kullanımları 10değil9
a_horse_with_no_name

3
Sadece bir not: Redshift'te @ user2694306'nın formülasyonu çalışır: '10 gün 'aralığı. Redshift'te '10' gün aralığı çalışmıyor.
Ben


9

Testlerimden (ve PostgreSQL dox'tan ) anladığım kadarıyla , alıntıların diğer cevaplardan farklı yapılması ve ayrıca şöyle bir "gün" içermesi gerekir:

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

Burada gösterilmektedir (bunu herhangi bir Postgres db üzerinde çalıştırabilmeniz gerekir):

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

Sonuç:

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

Aslında, Bradley'nin cevabının doğru olduğunu fark etmeyi özledim. Her neyse, benimkini burada doğru yolun kanıtı olarak bırakacağım. Kabul edilen yanıt yanlış (en azından çalıştırdığım Postgre sürümü için)
Son Derece Düzensiz

0

Veri türlerini kontrol ederdim.

current_date "tarih" veri türüne sahiptir, 10 bir sayıdır ve Table.date - tablonuza bakmanız gerekir.


0

aşağıdakiler arasında da kullanabilirsiniz:

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

1
betweenBunu doğru olarak yapılabilir diye, ilk düşük değere sahip olmak zorunda SELECT Table.date FROM Table WHERE date between current_date - interval '10 day' and current_date;
tip

0

Geçerli tarih yerine belirli bir tarihle çalışmak istiyorsanız, yalnızca sorguyu genellemek:

SELECT Table.date
  FROM Table 
  WHERE Table.date > '2020-01-01'::date - interval '10 day'
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.