W tym artykule przyjrzymy się pracy z datami w PostgreSQL, w tym różnymi typami i formatami danych dat, ich funkcjami oraz sposobami radzenia sobie z nimi w codziennej rutynie. Do zilustrowania przykładów użyjemy dbForge Studio dla PostgreSQL.
Możesz używać dat i znaczników czasu do analizy danych i przechowywania danych, ponieważ pozwalają one określić, kiedy zdarzenie rzeczywiście miało miejsce. Trudne w przypadku dat jest to, że ich formaty różnią się w różnych krajach, więc może to być dość trudne zadanie dla początkujących w zarządzaniu bazami danych. Typ danych i format kolumny daty powinien być zawsze zgodny z informacjami wprowadzonymi przez użytkownika. Ponadto należy zmodyfikować format daty, aby odpowiadał preferencjom użytkowników. Postgres obsługuje szeroką gamę formatów danych.
Zawartość
- Przegląd typów danych PostgreSQL DATE
- Używanie bieżącej daty jako wartości domyślnej
- Funkcje Postgres DATE
- Korzystanie z funkcji TERAZ(), aby uzyskać aktualną datę
- Za pomocą funkcji TO_CHAR() – wypisz wartość daty w określonym formacie
- Użycie operatora minus, aby uzyskać odstęp między dwiema datami
- Korzystanie z funkcji AGE(), aby uzyskać różnicę dat w latach, miesiącach i dniach
- Użycie funkcji EXTRACT() do pobrania roku, kwartału, miesiąca, tygodnia, dnia z wartości daty
- Używanie TO_TIMESTAMP() do konwersji ciągu znaków na znacznik czasu
- Podsumowanie
Przegląd typów danych PostgreSQL DATE
DATE
typ danych w PostgreSQL służy do przechowywania dat w formacie RRRR-MM-DD (np. 2022-03-24). Potrzebuje 4 bajtów do przechowywania wartości daty w kolumnie. Zauważ, że najwcześniejsza możliwa data to 4713 pne, a najnowsza możliwa data to 5874897 AD.
Bardzo ważne jest zachowanie czytelności kodu na etapie jego pisania. dbForge Studio dla PostgreSQL może pochwalić się wygodnym i intuicyjnym formaterem PostgreSQL. Dbając o formatowanie kodu, sprawdzanie składni i uzupełnianie kodu, wbudowana funkcja formatowania Postgres SQL w dbForge Studio dla PostgreSQL pozwoli Ci skupić się również na radzeniu sobie z typem danych DATE.
Używanie bieżącej daty jako wartości domyślnej
Domyślna wartość w DATE
kolumnę w bazie danych Postgres można ustawić za pomocą słowa kluczowego DEFAULT CURRENT DATE
, jak w poniższym skrypcie:
CREATE TABLE myevents (
event_id serial PRIMARY KEY,
event_details VARCHAR (255) NOT NULL,
event_date DATE NOT NULL DEFAULT CURRENT_DATE
);
INSERT INTO myevents (event_details)
VALUES('Meeting the client ABC');
SELECT * FROM myevents;
Jak widać, wartość [data wydarzenia] kolumna jest automatycznie wstawiana przez serwer PostgreSQL przy użyciu bieżącej daty systemowej w formacie RRRR-MM-DD.
Funkcje Postgres DATE
Czasami krytyczna jest zmiana formatu daty lub obliczenie wartości w tabeli PostgreSQL. Być może będziemy musieli to zrobić dla użytkowników z różnych stref czasowych na całym świecie. W tym przypadku kluczowe znaczenie mają funkcje SQL.
Korzystanie z funkcji NOW(), aby uzyskać aktualną datę
SELECT now();
Możesz użyć podwójnych dwukropków (::), aby rzucić DATETIME
wartość na DATE
wartość jak pokazano poniżej:
Aktualny znacznik czasu systemu jest zwracany przez NOW()
funkcjonować. Składnia jest następująca:
SELECT now()::date;
Za pomocą funkcji TO_CHAR() – wypisz wartość daty w określonym formacie
Aby przedstawić dane wyjściowe wartości daty Postgres w określonym formacie, TO_CHAR()
przydaje się funkcja. Składnia jest następująca:
TO_CHAR(expression, format)
Istnieją dwa parametry akceptowane przez TO_CHAR()
funkcja:
- Data wprowadzenia :Data do przekonwertowania na określony format.
- Format daty :Symbol zastępczy dla nowej specyfikacji formatu daty.
Zobaczmy, jak przekonwertować istniejące wartości dat z [MyEvents] tabeli w formacie DD-MM-RRRR.
SELECT event_details,event_date as ExistingDateformat,
to_char(event_date,'DD-MM-YYYY') As NewDateFormat FROM myevents;
Aby przekonwertować bieżący znacznik czasu na preferowany format, możesz połączyć TO_CHAR()
i NOW()
funkcje.
SELECT TO_CHAR(NOW() :: DATE, 'dd-mm-yyyy');
Używanie operatora minus, aby uzyskać odstęp między dwiema datami
Aby obliczyć różnicę między dwiema datami, użyj operatora minus (-). Poniższe zapytanie zawiera okres między obecnym znacznikiem czasu a [eventdate] z Moich wydarzeń stół.
SELECT event_date,now() as currentdate,
now()-event_date as Interval FROM myevents
where event_id=2;
Możesz również wybrać przedział czasu, w którym data ma być zwracana po upływie określonego czasu. Spójrz na poniższe zapytanie:
SELECT (NOW() + interval '3 hour') AS threehourslater,
(NOW() + interval '2 day') AS Twodaylater,
(NOW() - interval '2 year') AS TwoYearBefore,
(event_date- interval '1 year') as eventdatedifference
from myevents;
Korzystanie z funkcji WIEK(), aby uzyskać różnicę dat w latach, miesiącach i dniach
Za pomocą AGE()
funkcji, możesz uzyskać różnicę dat w latach, miesiącach i dniach. Ta funkcja może być wykorzystana do określenia wieku osoby. Pierwsza wartość daty jest odejmowana od drugiej wartości daty za pomocą tej funkcji, która akceptuje dwie daty wejściowe. Gdy wartości w skrypcie funkcji są odwrócone, wynikiem jest wartość ujemna.
Sprawdźmy wiek osoby, której data urodzenia to 09.10.1995. Składnia jest następująca:
SELECT current_date,
AGE(timestamp '1995-10-09'::timestamp) as EmpAge;
Użycie funkcji EXTRACT() do pobrania roku, kwartału, miesiąca, tygodnia, dnia z wartości daty
EXTRACT()
funkcja zwraca dzień, tydzień, miesiąc, rok i kwartał z określonej wartości daty.
Wyodrębnij rok:
SELECT EXTRACT(YEAR FROM TIMESTAMP '2022-04-09 10:30:15') as year;
Wyodrębnij miesiąc:
SELECT EXTRACT(Month FROM TIMESTAMP '2022-04-09 10:30:15') as Month;
Wyodrębnij ćwiartkę:
SELECT EXTRACT(QUARTER FROM TIMESTAMP '2022-04-09 10:30:15') as QUARTER;
Wyodrębnij dzień tygodnia:
SELECT EXTRACT(DOW FROM TIMESTAMP '2022-04-09 10:30:15') as DOW;
Wyodrębnij dzień roku:
SELECT EXTRACT(DOY FROM TIMESTAMP '2022-04-09 10:30:15') as DOY;
Pamiętaj, że dbForge Studio wyświetla wyniki wykonania zapytania w osobnej karcie.
EXTRACT()
funkcja może być łatwo łączona z INTERVAL
. Załóżmy, że chcemy ustawić interwał na 5 lat 8 miesięcy 23 dni 08 godzin 10 minut i 20 sekund. Poszczególne wartości są zwracane przez EXTRACT
funkcja.
SELECT EXTRACT(YEAR
FROM INTERVAL '5 years 8 month 23 days 08 hours 10 minutes 20 seconds' ),
EXTRACT(Month
FROM INTERVAL '5 years 8 month 23 days 08 hours 10 minutes 20 seconds' ),
EXTRACT(Day
FROM INTERVAL '5 years 8 month 23 days 08 hours 10 minutes 20 seconds' ),
EXTRACT(hour
FROM INTERVAL '5 years 8 month 23 days 08 hours 10 minutes 20 seconds' ),
EXTRACT(Minute
FROM INTERVAL '5 years 8 month 23 days 08 hours 10 minutes 20 seconds' );
Korzystanie z TO_TIMESTAMP() do konwersji ciągu na znacznik czasu
Możesz zachować wartości dat w UTC (uniwersalny koordynator czasu) i w razie potrzeby zmienić strefę czasową, jeśli chcesz przekonwertować znacznik czasu na inną strefę czasową.
SELECT * FROM pg_timezone_names;
Aby sprawdzić aktualną strefę czasową, użyj SHOW TIMEZONE
polecenie.
Możesz użyć AT TIME ZONE
aby otrzymać dane wyjściowe dla wybranej strefy czasowej, wybierając żądaną wartość strefy czasowej z pg_timezone_names tabela.
SELECT '2022-04-09 10:36:19'::timestamp AT TIME ZONE 'America/Los_Angeles';
AT TIME ZONE
pozwala mieć różne wyjścia stref czasowych.
SELECT '2022-04-09 10:36:19'::timestamp AT TIME ZONE 'America/Washington';
SELECT '2022-04-09 10:36:19'::timestamp AT TIME ZONE 'Asia/Beijing';
SELECT '2022-04-09 10:36:19'::timestamp AT TIME ZONE 'Europe/Kyiv';
Podsumowanie
Podsumowując, PostgreSQL DATE
typ danych jest bardzo ważny i przydatny podczas przechowywania dat i znaczników czasu w tabelach, dlatego jest dość powszechny w relacyjnej bazie danych. Zakres ich zastosowania jest niezwykle szeroki, dlatego tak ważne jest, aby były one czytelne dla każdego użytkownika w dowolnym kraju i strefie czasowej. Dzięki różnym funkcjom Postgresa łatwo jest zaspokoić potrzeby użytkowników, ponieważ możesz zmieniać daty, aby mogły być używane w określonej strefie czasowej, z określonym formatem i innymi szczegółami, które znacznie ułatwiają pracę z takimi danymi. Wreszcie, jeśli szukasz idealnego połączenia intuicyjnego interfejsu graficznego i rozszerzonego wiersza poleceń, który może sprawić, że praca z DATE
jeszcze przyjemniejszy typ danych, przyda się dbForge Studio dla PostgreSQL.