Невозможно отформатировать дату в определенном формате - PullRequest
0 голосов
/ 20 апреля 2020

Я импортировал данные из файла CSV в базу данных postgresql, и дата, хранящаяся в столбце базы данных, имеет следующий формат '2012-27-3T19:00:18' Когда я пытаюсь применить форматирование к файлу CSV, он не работает, поэтому он находится в Varchar тип данных в базе данных. Я попытался изменить тип данных столбца на отметку времени и дату, и оба раза он возвращал эту ошибку

SQL Error [22008]: ERROR: date/time field value out of range: "2012-27-3T19:00:18"
  Hint: Perhaps you need a different "datestyle" setting.

Когда я пытался применить форматирование в операторе Select, он выдавал ту же ошибку. Можно ли как-нибудь изменить формат даты на 'YYYY/MM/DD HH:MM:SS.SSS'?

Это то, чего я пытаюсь достичь

select 
TO_CHAR(column12 :: DATE, 'YYYY/MM/DD HH24:MM:SS.00') column12 
from newtable n

Когда я применяю ту же технику форматирования к сегодняшней дате и раз все работает нормально.

select TO_CHAR(NOW() :: DATE, 'YYYY/MM/DD HH24:MM:SS.00');

Ответы [ 4 ]

0 голосов
/ 20 апреля 2020

Это довольно странный формат, с днем ​​до месяца, но с использованием T, как если бы это был стандартный формат. Это работает:

select to_timestamp('2012-27-3T19:00:18', 'YYYY-D-M\Thh24:mm:ss')

Если вам не нужен часовой пояс, вы можете удалить его:

select to_timestamp('2012-27-3T19:00:18', 'YYYY-D-M\Thh24:mm:ss')::timestamp without time zone
0 голосов
/ 20 апреля 2020

Ну, ваше строковое значение имеет действительно странный формат, так как в нем есть день посередине, а не конец, как можно было бы ожидать от формата ISO.

Вам нужно будет использовать to_timestamp() с правильной маской формата для преобразования этого формата:

select to_char(to_timestamp('2012-27-3T19:00:18', 'yyyy-dd-mm"T"hh24:mi:ss'), 'YYYY/MM/DD HH24:MM:SS.00') 
from the_table;

Но вам действительно нужно исправить определение таблицы и объявить столбец как timestamp

0 голосов
/ 20 апреля 2020

Попробуйте это!

SELECT to_char(date_column, 'yyyy-MM-dd HH:mm:ss') FROM table_name

Попробуйте этот формат возможно yyyy-MM-dd'T'HH:mm:ss

0 голосов
/ 20 апреля 2020

, поскольку ошибка показывает

Error [22008]: ERROR: date/time field value out of range: "2012-27-3T19:00:18"

вне диапазона

, попробуйте найти правильный размер столбца (например, на 20), который соответствует вашей дате формат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...