У меня дата типа '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>.
Это должно работать в 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? Идеальный запрос!!!! большое спасибо!!!
@TristanSalord Потому что я использовал функцию TO_CHAR, чтобы преобразовать ее в определенный формат, и для этого требуется, чтобы выражение было датой-временем или аналогичным типом данных. (Я бросил это как дату). Если вы считаете, что мой ответ работает для вас, нажмите кнопку проверки ниже «голосовать за/против», чтобы принять этот ответ.
Итак, решение 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 ') из двойного;
Спасибо ему большое!
Не могли бы вы указать, какую СУБД вы используете? (Oracle, MS SQL Server, MySQL...)