Alterações de SQL: Adicionar novos elementos de formato de data e hora (pendente)

Atenção

Essa alteração de comportamento faz parte do pacote 2026_03.

Para saber o status atual do pacote, consulte Histórico do pacote.

Quando este pacote de alterações de comportamento é ativado, novos elementos de formato de data e hora abreviados são habilitados, o que afeta a formatação de data e hora e a lógica de análise.

Antes da mudança:

Os seguintes elementos de formato foram analisados ​​e serializados como caracteres literais na conversão de data e hora para cadeia de caracteres ou de cadeia de caracteres para data e hora: Y, MO, D, H24, H12, H, ME, S, P.

Após a mudança:

Os novos elementos de formato a seguir agora são interpretados pela lógica de análise e formatação:

  • Y para «ano» (sem preenchimento)

  • MO para «mês» (sem preenchimento)

  • D para «dia» (sem preenchimento)

  • H24 para «hora do dia no formato de 24 horas» (sem preenchimento)

  • H12 para «hora do dia no formato de 12 horas» (sem preenchimento)

  • H como sinônimo de H24

  • ME para «minuto» (sem preenchimento)

  • S para «segundo» (sem preenchimento)

  • P para «indicador de AM/PM com uma letra» (A para AM ou P para PM)

Qualquer uso desses caracteres ou sequências sem aspas será interpretado como um elemento de formato em vez de um literal.

Essa alteração de comportamento pode constituir uma mudança incompatível com usuários que usaram esses novos elementos de formato como caracteres sem aspas em seus modelos de formato para DATE, TIME, TIMESTAMP_LTZ, TIMESTAMP_NTZ ou TIMESTAMP_TZ.

Por exemplo:

  • Antes, SELECT TO_CHAR(current_timestamp(), 'YYYY-MM-DD JST') gerava a sequência «JST» como caracteres literais, por exemplo, 2026-03-18 JST.

  • Agora, o S em JST será interpretado como um «segundo» elemento de formato, e a lógica de formatação inserirá um valor numérico: 2026-03-18 J47T.

O que você precisa fazer

Se você usa algum desses novos elementos de formato como caracteres ou cadeias de caracteres sem aspas em seus modelos de formato, coloque entre aspas quaisquer partes do modelo de formato que devam ser mantidas como caracteres literais. Por exemplo:

-- Before (incorrect after this change):
SELECT TO_CHAR(current_timestamp(), 'YYYY-MM-DD JST');

-- After (corrected):
SELECT TO_CHAR(current_timestamp(), 'YYYY-MM-DD "JST"');

Ref: 2281