Преобразование varchar с нечисловым символом на сегодняшний день

У меня дата типа 'Mon Sep 14 09:03:10 +0000 2015', что мне не удалось преобразовать их в формат даты

Уже пробовал to_date/to_timestamp и другую спецификацию формата

Например:

select TO_TIMESTAMP_TZ('Mon Sep 14 09:03:10 +0000 2015') from dual;

Я ожидаю получить что-то вроде 'DD/MM/YYYY'.

Не могли бы вы указать, какую СУБД вы используете? (Oracle, MS SQL Server, MySQL...)

Gen Wan 10.04.2019 15:49

Похоже на Оракула? Если это так, добавьте к вопросу тег <oracle>.

jarlh 10.04.2019 15:50
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
2
39
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Это должно работать в Oracle:

select TO_TIMESTAMP_TZ('Mon Sep 14 09:03:10 +0000 2015', 'DY MON dd HH24:MI:SS TZHTZM YYYY')
from dual;
Ответ принят как подходящий

В Оракуле:

select 
TO_CHAR(CAST(SUBSTR(TO_TIMESTAMP_TZ('Mon Sep 14 09:03:10 +0000 2015', 'DY Mon dd HH24:MI:SS TZHTZM YYYY'),1,9) AS DATE),'DD/MM/YYYY')
from dual;

Выход:

14/09/2015

Большое спасибо Gen Wan.... Не могли бы вы объяснить, почему необходимо использовать cast? Идеальный запрос!!!! большое спасибо!!!

Tristan Salord 11.04.2019 08:43

@TristanSalord Потому что я использовал функцию TO_CHAR, чтобы преобразовать ее в определенный формат, и для этого требуется, чтобы выражение было датой-временем или аналогичным типом данных. (Я бросил это как дату). Если вы считаете, что мой ответ работает для вас, нажмите кнопку проверки ниже «голосовать за/против», чтобы принять этот ответ.

Gen Wan 11.04.2019 17:41

Итак, решение Gen Wan работает довольно хорошо, и в конце концов я был близок к решению, но мне пришлось изменить язык sqldevelopper на английский, чтобы работать. Если вы используете разработчика Sql на другом языке, он не распознает формат временной метки, говорящий «это недопустимый день недели».

Итак, решение Gen Wan: выберите TO_CHAR(CAST(SUBSTR(TO_TIMESTAMP_TZ('Mon Sep 14 09:03:10 +0000 2015', 'DY Mon dd HH24:MI:SS TZHTZM YYYY'),1,9) AS DATE),'DD/MM/YYYY ') из двойного;

Спасибо ему большое!

Другие вопросы по теме