PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak uzyskać ciąg daty rozpoczęcia i zakończenia tygodnia w PostgreSQL?

Możesz użyć date_trunc('week', ...) .

Na przykład:

SELECT date_trunc('week', '2012-07-25 22:24:22'::timestamp);
-> 2012-07-23 00:00:00

Następnie możesz przekonwertować to na datę, jeśli nie interesuje Cię godzina rozpoczęcia.

Aby uzyskać również datę zakończenia:

SELECT    date_trunc('week', '2012-07-25 22:24:22'::timestamp)::date
   || ' '
   || (date_trunc('week', '2012-07-25 22:24:22'::timestamp)+ '6 days'::interval)::date;

-> 2012-07-23 2012-07-29

(Użyłem tutaj domyślnego formatowania, możesz oczywiście dostosować to, aby używało MM/DD/RRRR.)

Zauważ, że jeśli chcesz dokonywać porównań na znacznikach czasu, zamiast używać (date_trunc('week', ...) + '6 days'::interval , możesz dodać cały tydzień i użyć ścisłego porównania na koniec tygodnia.

To wykluczy y znaczniki czasu ostatniego dnia tygodnia (ponieważ godzina graniczna to północ dnia).

    date_trunc('week', x)::date <= y::timestamp
AND y::timestamp <= (date_trunc('week', x) + '6 days'::interval)::date

Obejmuje to ich:

    date_trunc('week', x)::date <= y::timestamp
AND y::timestamp < (date_trunc('week', x) + '1 week'::interval)

(Dzieje się tak w rzadkich przypadkach, gdy nie możesz użyć date_trunc na y bezpośrednio.)

Jeśli tydzień zaczyna się w niedzielę, zastąp date_trunc('week', x)::date z date_trunc('week', x + '1 day'::interval)::date - '1 day'::interval powinien działać.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Funkcja zastępowania encji PostgreSQL w HTML

  2. SQLalchemy nie zatwierdza zmian podczas ustawiania roli

  3. Spring Managed Bean Injection w klasie implementującej RowMapper

  4. Jak dołączyć elementy tablicy jsonb w Postgresie?

  5. Wyszukiwanie pełnotekstowe Postgres z synonimami