PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

PostgreSQL Query untuk memilih data dari minggu lalu?

Kondisi ini akan mengembalikan catatan dari Minggu sampai Sabtu minggu lalu:

WHERE created BETWEEN
    NOW()::DATE-EXTRACT(DOW FROM NOW())::INTEGER-7 
    AND NOW()::DATE-EXTRACT(DOW from NOW())::INTEGER

Ada contohnya:

WITH compras AS (
    SELECT ( NOW() + (s::TEXT || ' day')::INTERVAL )::TIMESTAMP(0) AS created
    FROM generate_series(-20, 20, 1) AS s
)
SELECT to_char( created, 'DY'::TEXT), created
FROM compras
WHERE created BETWEEN
    NOW()::DATE-EXTRACT(DOW FROM NOW())::INTEGER-7 
    AND NOW()::DATE-EXTRACT(DOW from NOW())::INTEGER

Sebagai jawaban atas @d456:

Itu benar, BETWEEN termasuk tengah malam pada hari Minggu di kedua ujung interval. Untuk mengecualikan tengah malam pada hari Minggu di akhir interval, perlu menggunakan operator >= dan < :

WITH compras AS (
    SELECT s as created
    FROM generate_series( -- this would produce timestamps with 20 minutes step
             (now() - '20 days'::interval)::date,
             (now() + '20 days'::interval)::date,
             '20 minutes'::interval) AS s
)
SELECT to_char( created, 'DY'::TEXT), created
FROM compras
WHERE TRUE
    AND created >= NOW()::DATE-EXTRACT(DOW FROM NOW())::INTEGER-7
    AND created <  NOW()::DATE-EXTRACT(DOW from NOW())::INTEGER


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mendapatkan elemen array yang berbeda dengan postgres?

  2. postgresql tidak muncul di Sumber Data saat membuat .ADO.net Entity Data Model

  3. Menggunakan r sf::st_write ke skema non-publik di PostgreSQL

  4. Skema database relasional untuk sumber acara

  5. gunakan coba/kecuali dengan psycopg2 atau dengan penutupan?