Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Poznawanie formatów daty Postgres i ich różnych funkcji

W tym artykule omówimy daty Postgres, różne typy danych dat, zastosowania i funkcje.

Znaczniki daty i czasu są przydatne do analizy danych i przechowywania danych w celu sprawdzenia, kiedy zdarzenie rzeczywiście miało miejsce. Na przykład, gdy masz zamówienia zakupu i sprzedaży, miesięczne lub kwartalne zarobki i nie tylko. Formaty dat różnią się w zależności od kraju, dlatego może to być skomplikowane zadanie dla osób, które dopiero zaczynają zarządzać bazami danych i pracują z kolumnami dat. Format lub typ danych kolumny daty powinien być zawsze zgodny z danymi wprowadzonymi przez użytkownika. Dodatkowo należy przekonwertować wyświetlanie formatu daty zgodnie z wymaganiami użytkownika.

Postgres ma wiele obsługiwanych typów danych. Zanim przejdziesz dalej, sugeruję zapoznanie się z tematem Eksploracja różnych typów danych Postgres, aby lepiej je zrozumieć.

Typ danych Postgres DATE

Postgres używa typu danych DATE do przechowywania różnych dat w formacie RRRR-MM-DD. Używa 4 bajtów do przechowywania wartości daty w kolumnie.

  • Najniższa data:4713 pne
  • Najwyższa data:5874897 pne
  • Format daty:RRRR-MM-DD (np. 2021-01-01)

Możesz zaprojektować tabelę Postgres z kolumną DATE i użyć słowa kluczowego DEFAULT CURRENT_DATE aby użyć bieżącej daty systemowej jako wartości domyślnej w tej kolumnie.

CREATE TABLE SalesOrders (
Order_id serial PRIMARY KEY,
Orderdetails VARCHAR (255) NOT NULL,
OrderDate DATE NOT NULL DEFAULT CURRENT_DATE
);
INSERT INTO SalesOrders (Orderdetails)
VALUES('Sample Order for customer ABC');

SELECT * FROM SalesOrders;

Jak pokazano poniżej, SQL automatycznie wstawia wartość kolumny [OrderDate] z bieżącą datą systemową w formacie RRRR-MM-DD.

Funkcje Postgres DATE

Często musimy zmodyfikować format daty lub wykonać obliczenia na istniejących wartościach przechowywanych w tabeli Postgres. Na przykład w Indiach typowy format daty to DD-MM-RRRR. Dlatego też, gdy użytkownik z Indii przegląda dane, prawdopodobnie będziemy chcieli, aby wyświetlał dane w najbardziej znanym mu formacie. W tym przypadku kluczową rolę odgrywają funkcje SQL.

Funkcja TO_CHAR()

Ta funkcja jest pomocna przy przekazywaniu danych wyjściowych wartości daty Postgres w określonym formacie. Akceptuje następujące dwa parametry.

  • Data wprowadzenia:jest to data, którą chcesz przekonwertować na określony format.
  • Format daty:tutaj określasz nowy format daty.

Poniższe zapytanie konwertuje istniejące wartości dat przechowywane w tabeli [SalesOrders] na format DD-MM-RRRR.

SELECT Orderdetails,OrderDate as ExistingDateformat,
to_char(OrderDate,'DD-MM-YYYY') As NewDateFormat FROM SalesOrders;

Obsługiwane wartości w funkcji to_char() są pokazane poniżej.

RRRR Rok czterocyfrowy
RRRR Ostatnie trzy cyfry roku
RR Ostatnie dwie cyfry roku
MIESIĄC Nazwa miesiąca wielkimi literami
Miesiąc Nazwa miesiąca z pierwszą wielką literą
miesiąc Nazwa miesiąca małymi literami
PON/PON/PON Skrót miesiąca odpowiednio wielkimi, pierwszą wielką literą i wszystkimi małymi literami
MM Numer miesiąca (01-12)
DZIEŃ/Dzień/dzień Nazwa dnia odpowiednio wielką, pierwszą wielką literą i wszystkimi małymi literami
DDD Dzień w roku (001 do 366)
DD Dzień miesiąca (od 01 do 31)
D Dzień tygodnia (od niedzieli (1) do soboty (7))
W Tydzień miesiąca
WW Tydzień roku

W poniższym SQL podano kilka przykładów różnych formatów daty.

SELECT Orderdetails,OrderDate as ExistingDateformat,
to_char(OrderDate,'DD-MM-YYYY') As DDMMYYYY,
to_char(OrderDate,'DD-MM-YY') As DDMMYY,
to_char(OrderDate,'DD.MM.YY') As "DD.MM.YY",
to_char(OrderDate,'MM/DD/YYYY') As "MM/DD/YYYY",
to_char(OrderDate,'DAY MM/DD/YYYY') As "MM/DD/YYYY",
to_char(OrderDate,'DDD MM/DD/YYYY') As "DDD MM/DD/YYYY"
FROM SalesOrders

Funkcja Now()

Funkcja Now() zwraca aktualny znacznik czasu systemu (data i godzina).

Możesz określić podwójne dwukropki (::), aby rzutować wartość DATETIME na wartość DATE.

Możesz połączyć TO_CHAR() i Now(), aby przekonwertować bieżący znacznik czasu na określony format.

SELECT TO_CHAR(NOW() :: DATE, 'dd-mm-yyyy');

Operator minus i interwał

Możesz użyć operatora minus (-), aby obliczyć różnicę między dwiema datami. Na przykład poniższe zapytanie zwraca interwał między bieżącym znacznikiem czasu a [DataZamówienia] z tabeli SalesOrders.

SELECT Orderdate,now() as currentdate,
now()-Orderdate as Interval FROM SalesOrders
where order_id=2;

Możesz także określić interwał zwracania daty po określonym okresie. Na przykład poniższe zapytanie SQL daje następujące wartości.

  • Dla przyszłej daty określ wartość interwału 2 godziny od bieżącego znacznika czasu: now() + interwał „2 godziny”
  • Dla przyszłej daty określ wartość interwału wynoszącą 1 dzień od aktualnej sygnatury czasowej: now() + interwał „1 dzień”
  • Dla daty przeszłej określ wartość interwału jeden rok od bieżącego znacznika czasu: Now() – interwał „1 rok”
  • Oblicz rok po dacie na podstawie wartości przechowywanej w kolumnie [Orderdate]: data zamówienia – przedział „1 rok”
SELECT (NOW() + interval '2 hour') AS twohourslater,
(NOW() + interval '1 day') AS Onedaylater,
(NOW() - interval '1 year') AS OneYearBefore,
(Orderdate- interval '1 year') as Orderdatedifference
from salesorders;

Funkcja WIEK()

Funkcja AGE() zwraca różnicę dat w latach, miesiącach i dniach. Możesz użyć tej funkcji do obliczenia wieku osoby.

Ta funkcja akceptuje dwa parametry daty i odejmuje pierwszą wartość daty od drugiej.

Jeśli odwrócisz wartości w powyższym skrypcie funkcji, zwróci ona wartość ujemną.

W innym przykładzie załóżmy, że ktoś ma datę urodzenia 1990-07-01. Dlatego wiek osoby można obliczyć jak poniżej.

SELECT current_date,
AGE(timestamp '1990-07-01') as EmpAge;

Funkcja EXTRACT()

Funkcja Extract() zwraca dzień, tydzień, miesiąc, rok i kwartał z określonej wartości daty.

Wyodrębnij rok

SELECT EXTRACT(YEAR FROM TIMESTAMP '2021-06-28 10:30:15') as year;

Wyodrębnij miesiąc

SELECT EXTRACT(Month FROM TIMESTAMP '2021-06-28 10:30:15') as Month;

Wyodrębnij ćwierć

SELECT EXTRACT(QUARTER FROM TIMESTAMP '2021-06-28 10:30:15') as QUARTER;

Wyodrębnianie dnia tygodnia

SELECT EXTRACT(DOW FROM TIMESTAMP '2021-06-28 10:30:15') as DOW ;

Wyodrębnianie dnia w roku

SELECT EXTRACT(DOY FROM TIMESTAMP '2021-06-28 10:30:15') as DOY ;

Możesz także użyć funkcji EXTRACT() w połączeniu z INTERVAL. Na przykład poniżej określamy interwał jako 7 lat 9 miesięcy 20 dni 09 godzin 12 minut i 13 sekund. Funkcja extract zwraca poszczególne wartości.

SELECT EXTRACT(YEAR
FROM INTERVAL '7 years 9 months 20 days 09 hours 12 minutes 13 second' ),
EXTRACT(Month
FROM INTERVAL '7 years 9 months 20 days 09 hours 12 minutes 13 second' ),
EXTRACT(Day
FROM INTERVAL '7 years 9 months 20 days 09 hours 12 minutes 13 second' ),
EXTRACT(hour
FROM INTERVAL '7 years 9 months 20 days 09 hours 12 minutes 13 second' ),
EXTRACT(Minute
FROM INTERVAL '7 years 9 months 20 days 09 hours 12 minutes 13 second' );
;

W STREFIE CZASOWEJ

Czasami trzeba przekonwertować znacznik czasu na inną strefę czasową. Na przykład możesz przechowywać wartości dat w UTC (uniwersalny koordynator czasu) i przekonwertować strefę czasową zgodnie z wymaganiami.

SELECT * FROM pg_timezone_names;

Aby sprawdzić aktualną strefę czasową, użyj POKAŻ STREFĘ CZASOWĄ, jak pokazano poniżej.

Możesz wybrać wymaganą wartość strefy czasowej z pg_timezone_names i użyć AT TIME ZONE do uzyskania danych wyjściowych dla określonej strefy czasowej.

SELECT '2021-06-28 07:09:19'::timestamp AT TIME ZONE 'America/Chicago';

Podobnie, możemy uzyskać różne wyjścia stref czasowych za pomocą AT TIME ZONE.

SELECT '2021-06-28 07:09:19'::timestamp AT TIME ZONE 'America/New_York';

SELECT '2021-06-28 07:09:19'::timestamp AT TIME ZONE 'Asia/Qatar';

SELECT '2021-06-28 07:09:19'::timestamp AT TIME ZONE 'Europe/Istanbul';

Podsumowanie

Typy dat Postgres są niezbędne i cenne podczas przechowywania dat i znaczników czasu w prawie każdej tabeli relacyjnej bazy danych. Potrzebujesz ich do różnych celów, takich jak wstawianie zamówień lub aktualizowanie znaczników czasu, zamówień zakupu i sprzedaży, szczegółów wydarzeń, informacji o klientach i pracownikach i nie tylko. Możesz użyć wielu funkcji Postgres, aby przekonwertować typ daty na wymaganą strefę czasową, format i określone informacje, aby uprościć wyodrębnianie i analizę danych.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zwróć listę profili poczty bazy danych w SQL Server (T-SQL)

  2. Jak przedstawiać swoją wartość jako DBA dyrektorom finansowym

  3. Jaka jest różnica między użyciem sprzężenia krzyżowego a umieszczeniem przecinka między dwiema tabelami?

  4. Zarządzanie indeksami SQL Server za pomocą Index Manager dla SQL Server

  5. Jak uwzględnić wyniki związane z ostatnim miejscem podczas używania klauzuli TOP w SQL Server?