sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan får man ugestart- og slutdatostreng i PostgreSQL?

Du kan bruge date_trunc('week', ...) .

For eksempel:

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

Derefter kan du konvertere dette til en dato, hvis du ikke er interesseret i et starttidspunkt.

For også at få slutdatoen:

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

(Jeg har brugt standardformateringen her, du kan selvfølgelig tilpasse dette til at bruge MM/DD/ÅÅÅÅ.)

Bemærk, at hvis du vil foretage sammenligninger på tidsstempler, i stedet for at bruge (date_trunc('week', ...) + '6 days'::interval , vil du måske tilføje en hel uge og bruge en streng sammenligning for slutningen af ​​ugen.

Dette vil ekskludere y tidsstempler på den sidste dag i ugen (da skæringstidspunktet er midnat på dagen).

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

Dette vil inkludere dem:

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

(Det er i de sjældne tilfælde, hvor du ikke kan bruge date_truncy direkte.)

Hvis din uge starter på en søndag, skal du erstatte date_trunc('week', x)::date med date_trunc('week', x + '1 day'::interval)::date - '1 day'::interval burde virke.



  1. MySQL tæt rang for hver gruppe/partition

  2. Hvordan eliminerer Left Join / IS NULL poster, som er der i den ene tabel og ikke i den anden?

  3. Hvordan man bedst deler csv-strenge i oracle 9i

  4. Mysql:tilføjelse af fremmed nøgle giver ingen advarsel/fejl på MyISAM-tabeller