Я работаю с набором данных, который имеет столбец даты в виде строки. Я думал, что это будет просто делать что-то вроде этого:Преобразование несогласованных строк на сегодняшний день
to_date(date_of_birth,'YYYY-01-01')
date_of_birth находится в формате ДД/ММ/ГГГГ, и имеет тип «текст»
ОДНАКО, я наткнулся на некоторые сумасшедшие случаи, когда у вас есть информация, как
//1980
Другой случай был:
0/0/1980
Когда я бегу мое решение, я получаю следующее сообщение об ошибке:
ERROR: invalid value "//19" for "YYYY"
DETAIL: Value must be an integer.
Моя цель на самом деле просто собрать за год, так что, по крайней мере последовательны. Как вы обрабатываете такие случаи с помощью Postgres?
EDIT:
Switched его на следующее:
to_date(date_of_birth,'01/01/YYYY')
Мой запрос состоит в следующем:
SELECT to_date(date_of_birth,'01/01/YYYY') AS year, COUNT(*) AS yearTotal FROM student WHERE date_of_birth LIKE '%/%/1980' GROUP BY year;
В результате получается, как это:
year | yeartotal ---------------+----------- 0030-01-01 | 3 0001-01-01 BC | 1
Я получаю сообщение об ошибке: 'ОШИБКА: функция to_char (текст, неизвестен) не exist' – Adib
Что формат даты в date_of_birth базы данных –
Это текст, а формат - DD/MM/YYYY. Так, например, 5 октября 1980 года будет 05/10/1980. – Adib