Oracle
 sql >> база данни >  >> RDS >> Oracle

конвертиране на гггг-мм-дд в мм/дд/гггг

Датите нямат формат - те се представят вътрешно чрез 7- или 8-байта . Едва когато дадена клиентска програма получи дата, тази клиентска програма (потенциално) й дава формат.

Форматът на низ по подразбиране за дати в SQL/Plus или SQL Developer се задава от NLS_DATE_FORMAT параметър на сесията. Други клиенти обикновено имат параметри, които можете да зададете за формата на датата по подразбиране (ако не използват също NLS настройки). Имайте предвид обаче, че NLS_DATE_FORMAT е параметър на сесията, така че принадлежи към сесията на потребителя и множество потребители могат да имат различна стойност за параметъра, съответстваща на това как са го задали.

Ако искате да дадете на дата конкретен формат, тогава ще трябва да я конвертирате в низ:

SELECT TO_CHAR( DATE '2016-05-01', 'MM/DD/YYYY HH24:MI:SS' )
FROM   DUAL;

Защо вашата заявка не работи :

TO_DATE( value, frmt ) очаква стойност на низ и маска за формат. Вътрешният TO_DATE('2016-05-01 00:00:00','YYYY-MM-DD HH24:MI:SS') е напълно валиден и ще върне DATE '2016-05-01' .

Външният TO_DATE() обаче след това се предава DATE тип, който току-що сте генерирали, и формата на низа (вместо двата низа, които очаква). Oracle ще извика неявно TO_CHAR() на датата и използвайте NLS_DATE_FORMAT параметър на сесията като маска на формат. Това генерира низ от датата и, предвид грешката, стойността на NLS_DATE_FORMAT не е MM/DD/YYYY HH24:MI:SS така че когато външният TO_DATE() се опитва да анализира неявно създадения низ, но не успява, тъй като първото число, което чете, е невалидно за един месец.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Разделяне на текст на колона на редове (извличане на разделител в скоби) ORACLE SQL

  2. Разделяне на низ, ограничен от тръбата, в колони?

  3. Извличане на големи clob данни с помощта на sqlplus

  4. как да замените няколко низа заедно в Oracle

  5. Защо получавам следната функция за грешка LISTAGG:„резултатът от конкатенацията на низ е твърде дълъг?*