Changements SQL : Ajout de nouveaux éléments de format de date et d’heure (En attente)

Attention

Ce changement de comportement est présent dans le bundle 2026_03.

Pour connaître le statut actuel du bundle, reportez-vous à Historique du bundle.

Lorsque ce bundle de changements de comportement est activé, de nouveaux éléments de format de date et d’heure de forme courte sont activés, ce qui affecte la logique de formatage et d’analyse de datetime.

Avant la modification:

Les éléments de format suivants étaient analysés et sérialisés en tant que caractères littéraux dans la conversion datetime-to-string ou string-to-datetime : Y, MO, D, H24, H12, H, ME, S, P.

Après la modification:

Les nouveaux éléments de format suivants sont désormais interprétés par la logique d’analyse et de formatage :

  • Y pour « année » (non complété)

  • MO pour « mois » (non complété)

  • D pour « jour » (non complété)

  • H24 pour « heure de la journée basée sur 24 heures » (non complété)

  • H12 pour « heure de la journée basée sur 12 heures » (non complété)

  • H en tant que synonyme de H24

  • ME pour « minute » (non complété)

  • S pour « seconde » (non complété)

  • P pour « indicateur AM/PM à une seule lettre » (A pour AM ou P pour PM)

Toute utilisation sans guillemets de ces caractères ou séquences sera interprétée comme un élément de format au lieu d’un littéral.

Ce changement de comportement peut constituer un changement de rupture pour les utilisateurs qui ont utilisé ces nouveaux éléments de format comme caractères sans guillemets dans leurs modèles de format pour DATE, TIME, TIMESTAMP_LTZ, TIMESTAMP_NTZ ou TIMESTAMP_TZ.

Par exemple :

  • Auparavant, SELECT TO_CHAR(current_timestamp(), 'YYYY-MM-DD JST') produisait la séquence « JST » en tant que caractères littéraux, par exemple 2026-03-18 JST.

  • Maintenant, le S dans JST sera interprété comme un « second » élément de format, et la logique de formatage insérera une valeur numérique : 2026-03-18 J47T.

Ce que vous devez faire

Si vous utilisez l’un de ces nouveaux éléments de format comme caractères ou chaînes sans guillemets dans vos modèles de format, citez toutes les parties du modèle de format qui doivent être conservées comme caractères littéraux. Par exemple :

-- 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"');

Réf : 2281