В PostgreSQL можете да използвате to_date()
функция за преобразуване на низ в дата.
Синтаксис
Синтаксисът е така:
to_date(text, text)
Когато първият аргумент е низово представяне на датата, а вторият аргумент дефинира шаблона, който използва първият аргумент.
Пример
Ето основен пример за демонстрация.
SELECT to_date('10 Feb 2010', 'DD Mon YYYY');
Резултат:
2010-02-10
Шаблони
Вторият аргумент предоставя шаблона, в който е предоставен първият аргумент. Това понякога се нарича „форматен низ“.
Шаблонът се състои от един или повече шаблонни шаблони и по избор, един или повече модификатори на шаблон.
Шаблони на шаблони
Използвайки предишния пример, DD
е шаблонен модел и Mon
е шаблонен модел. YYYY
също е шаблонен модел. Всички те бяха комбинирани, за да образуват шаблона.
Можете да местите всеки шаблон на шаблона, както е необходимо. И можете да използвате различни шаблони като цяло.
Ето още няколко примера, които използват една и съща дата, но в различни формати (и следователно с различни шаблони).
\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";
Резултат (с помощта на вертикален изход):
ДД Пн ГГГГ | 2010-02-10 Пн ДД ГГГГ | 2010-02-10DD/MM/ГГГГ | 2010-02-10MM/DD/ГГГГ | 2010-02-10MM-DD-YYYY | 2010-02-10MMDDYYYY | 2010-02-10MM-DD-YY | 2010-02-10
Така че всички те използват една и съща дата, но датата е предоставена в различни формати. Работата на шаблона е да посочи изрично на Postgres в какъв формат е предоставена датата.
Както вероятно можете да си представите, ако не предоставихме шаблона, някои дати биха могли да бъдат интерпретирани по грешен начин, особено ако датата използва различен локал за своя формат.
Например 01/03/2010 може да се тълкува като първи март или трети януари, в зависимост от локала.
Модификатори на шаблонен шаблон
Понякога може да се наложи да добавите модификатор на шаблон към шаблона.
Например, ако вашата дата използва суфикс на порядък номер, ще трябва да се уверите, че се тълкува като такъв.
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";
Резултат (с помощта на вертикален изход):
<преди>10 февруари 2010 г. | 2010-02-1001-ви февруари 2010 г. | 2010-02-0103-ти февруари 2010 г. | 2010-02-03Ако не бях използвал модификатора на шаблонен шаблон, щях да получа грешка при използването на тези дати.
Ето пример за илюстрация.
SELECT to_date('10th Feb 2010', 'DD Mon YYYY');
Резултат:
ГРЕШКА:невалидна стойност "th" за "Mon" DETAIL:Посочената стойност не съответства на нито една от разрешените стойности за това поле.
Пълен списък с шаблони и модификатори
Postgres включва много повече шаблони и модификатори.
Те могат да се използват и при форматиране на стойности за дата/час (например при използване на to_char()
функция за преобразуване на времева марка в низ).
Вижте Шаблони и модификатори за форматиране на дата/час в PostgreSQL за пълен списък.