Преобразовать строку в дату можно с помощью функции
to_date(строка, формат)
Она позволяет вводить дату независимо от значения параметра DateStyle. Преобразуем строки в даты в форматах DD.MM.YYYY и MM.DD.YYYY:
SELECT to_date('31.12.2022', 'DD.MM.YYYY'),
to_date('12.31.2022', 'MM.DD.YYYY')
| # | to_date | to_date |
|---|---|---|
| 1 | 2022-12-31 | 2022-12-31 |
В строке формата можно использовать все коды, что и при форматировании даты и времени.
На практике обычно используют:
| Код | Описание |
|---|---|
| Y,YYY | год (4 или более цифр) с разделителем |
| YYYY | год (4 или более цифр) |
| YYY | последние 3 цифры года |
| YY | последние 2 цифры года |
| Y | последняя цифра года |
| MONTH | полное название месяца в верхнем регистре (дополненное пробелами до 9 символов) |
| Month | полное название месяца с большой буквы (дополненное пробелами до 9 символов) |
| month | полное название месяца в нижнем регистре (дополненное пробелами до 9 символов) |
| MON | сокращённое название месяца в верхнем регистре (3 буквы в английском; в других языках длина может меняться) |
| Mon | сокращённое название месяца с большой буквы (3 буквы в английском; в других языках длина может меняться) |
| mon | сокращённое название месяца в нижнем регистре (3 буквы в английском; в других языках длина может меняться) |
| MM | номер месяца (01–12) |
| DAY | полное название дня недели в верхнем регистре (дополненное пробелами до 9 символов) |
| Day | полное название дня недели с большой буквы (дополненное пробелами до 9 символов) |
| day | полное название дня недели в нижнем регистре (дополненное пробелами до 9 символов) |
| DDD | номер дня в году (001–366) |
| DD | день месяца (01–31) |
| D | номер дня недели, считая с воскресенья (1) до субботы (7) |
С помощью функции to_date можно так же вытащить дату из строки. Например:
SELECT to_date('Родился он 29.07.1991 в ...', 'Родился он DD.MM.YYYY')
| # | to_date |
|---|---|
| 1 | 1991-07-29 |