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

Jak to_date() działa w PostgreSQL

W PostgreSQL możesz użyć to_date() funkcja konwertująca ciąg na datę.

Składnia

Składnia wygląda tak:

to_date(text, text)

Gdzie pierwszy argument jest ciągiem reprezentującym datę, a drugi argument definiuje szablon, którego używa pierwszy argument.

Przykład

Oto podstawowy przykład do zademonstrowania.

SELECT to_date('10 Feb 2010', 'DD Mon YYYY');

Wynik:

2010-02-10

Szablony

Drugi argument zapewnia szablon, w którym znajduje się pierwszy argument. Czasami jest to określane jako „łańcuch formatu”.

Szablon składa się z co najmniej jednego wzorca szablonu i opcjonalnie co najmniej jednego modyfikatora wzorca szablonu.

Wzorce szablonów

Korzystając z poprzedniego przykładu, DD to wzorzec szablonu i Mon to wzór szablonu. YYYY jest również wzorem szablonu. Wszystkie te elementy zostały połączone w szablon.

Każdy wzór szablonu można przesuwać zgodnie z wymaganiami. Możesz też używać różnych wzorców szablonów.

Oto kilka przykładów, w których zastosowano tę samą datę, ale w różnych formatach (a zatem przy użyciu różnych szablonów).

\x
SELECT 
  to_date('10 Feb 2010', 'DD Mon YYYY') AS "DD Mon YYYY",
  to_date('Feb 10 2010', 'Mon DD YYYY') AS "Mon DD YYYY",
  to_date('10/02/2010', 'DD/MM/YYYY') AS "DD/MM/YYYY",
  to_date('02/10/2010', 'MM/DD/YYYY') AS "MM/DD/YYYY",
  to_date('02-10-2010', 'MM-DD-YYYY') AS "MM-DD-YYYY",  
  to_date('02102010', 'MMDDYYYY') AS "MMDDYYYY",
  to_date('02-10-10', 'MM-DD-YY') AS "MM-DD-YY";

Wynik (przy użyciu wyjścia pionowego):

DD Mon YYYY | 2010-02-10
Mon DD YYYY | 2010-02-10
DD/MM/YYYY  | 2010-02-10
MM/DD/YYYY  | 2010-02-10
MM-DD-YYYY  | 2010-02-10
MMDDYYYY    | 2010-02-10
MM-DD-YY    | 2010-02-10

Więc wszystkie używają tej samej daty, ale data jest podana w różnych formatach. Zadaniem szablonu jest wyraźne określenie Postgresowi, w jakim formacie data została dostarczona.

Jak zapewne możesz sobie wyobrazić, gdybyśmy nie dostarczyli szablonu, niektóre daty mogłyby zostać zinterpretowane w niewłaściwy sposób, zwłaszcza jeśli data używa innego języka dla swojego formatu.

Na przykład 01.03.2010 można interpretować jako pierwszy marca lub trzeci stycznia, w zależności od lokalizacji.

Modyfikatory wzorców szablonów

Czasami może być konieczne dodanie modyfikatora wzorca szablonu do szablonu.

Na przykład, jeśli twoja data używa sufiksu liczby porządkowej, musisz upewnić się, że jest on interpretowany jako taki.

SELECT 
  to_date('10th Feb 2010', 'DDth Mon YYYY') AS "10th Feb 2010",
  to_date('01st Feb 2010', 'DDth Mon YYYY') AS "01st Feb 2010",
  to_date('03rd Feb 2010', 'DDth Mon YYYY') AS "03rd Feb 2010";

Wynik (przy użyciu wyjścia pionowego):

10th Feb 2010 | 2010-02-10
01st Feb 2010 | 2010-02-01
03rd Feb 2010 | 2010-02-03

Gdybym nie używał modyfikatora wzorca szablonu, otrzymałbym błąd podczas korzystania z tych dat.

Oto przykład ilustrujący.

SELECT to_date('10th Feb 2010', 'DD Mon YYYY');

Wynik:

ERROR: invalid value "th" for "Mon"
DETAIL: The given value did not match any of the allowed values for this field.

Pełna lista wzorców i modyfikatorów szablonów

Postgres zawiera znacznie więcej szablonów i modyfikatorów.

Można ich również używać podczas formatowania wartości daty/czasu (na przykład podczas korzystania z funkcji to_char() funkcja konwersji znacznika czasu na ciąg).

Zobacz Wzorce i modyfikatory szablonów do formatowania daty/godziny w PostgreSQL, aby uzyskać pełną listę.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Instalacja Postgisa:typ geometria nie istnieje

  2. Jak zmienić użytkownika na superużytkownika w PostgreSQL?

  3. Czy mogę pisać funkcje PostgreSQL w Ruby on Rails?

  4. Czy można wykonywać zapytania między bazami danych za pomocą PostgreSQL?

  5. Niezdefiniowana metoda Railsów dla ActiveRecord_Associations_CollectionProxy