2012-02-25 14 views
16

próbował dowiedzieć się kwerendę wybierającą wyświetlania dni tygodnia, takie jak: poniedziałek, wtorek, środa, itp skończyło się z kwerendy wybierającej wyświetlanie daty tydzień,Get dni tygodnia w PostgreSQL

select ((date_trunc('week',current_date)::date) + (i+6)) as week_date 
    from generate_Series(0,6) i; 

Czy istnieje sposób na uzyskanie wyniku w poniedziałek, wtorek i tak dalej.

Odpowiedz

4

można zrobić tak:

VALUES ('Sunday'), ('Monday'), ('Tuesday'), ('Wednesday'), ('Thursday'), ('Friday'), ('Saturday'); 
46

Wystarczy użyć extract:

extract(dow from date_column::timestamp) 
from whatever_table; 

ta zwraca 0, 1 do niedzieli na poniedziałek, ..., 6 na sobotę.

Edit: Albo, skoro najwyraźniej nie potrzebują niczego, co rzeczywiście wymaga chwytając dzień tygodnia od podanej daty i chcesz tylko jedną kolumnę z ustalonych wartości ciągów reprezentujących nazwy dni od tygodnie, wystarczy utworzyć tabelę ...

+0

Hi Jack, nie chcę wartości liczby dni, zamiast tego potrzebne zapytanie o zwrot wszystkich siedmiu dni jako "niedziela", "poniedziałek" itd. Czy możesz zaproponować inne możliwości? – Reena

+0

@Flourida - Jak wskazałem w sekcji komentarza odpowiedzi Edwina, jeśli nie potrzebujesz tego dynamicznie generowanego, to dlaczego próbujesz to zrobić w SQL? Po prostu wypisz ciągi "' Sunday "', '" Monday "', etc, i skończmy z tym. –

+0

To drukuje wartość w różnych kolumnach. jak mogę go uzyskać w pojedynczej kolumnie? – Reena

1

Następująca kwerenda działa również

select to_char((date_trunc('week',current_date)::date) + i,'Day') as wkday from generate_series(0,6) i 
37

W PostgreSQL 9 roku jest:

to_char(date, 'dy');

które mogłyby przywrócić termin do dnia tygodnia jako wartość tekstowa

Powiązane problemy