Cela semble être un bug (1937516, que je ne peux pas voir, aussi 9861391, qui fait référence au bug de base 17291158, que je ne peux pas voir non plus), combiné avec le comportement du client. Dans SQL * Plus ou SQL Developer, cela semble OK - sorte de:
select '[' || tz_offset('Europe/Amsterdam') || ']' from dual;
'['||TZ_O
---------
[+01:00 ]
avec ce qui semble être un espace supplémentaire; bien que copier et le coller à partir de la feuille de calcul SQL Developer - où il est affiché comme - perd le support de fermeture trop:
'['||TZ_O
---------
[+01:00
Dumping la valeur générée montre le problème:
select dump('[' || tz_offset('Europe/Amsterdam') || ']') from dual;
DUMP('['||TZ_OFFSET('EUROPE/AMSTERDAM')||']')
---------------------------------------------
Typ=1 Len=9: 91,43,48,49,58,48,48,0,93
Notez que le 0 octet , qui est un caractère nul, et provoquant la confusion.
Comme le format offset est fixe, vous pouvez éviter ce via un substr()
simple:
select '[' || substr(tz_offset('Europe/Amsterdam'), 1, 6) || ']' from dual;
'['||SUB
--------
[+01:00]
select dump('[' || substr(tz_offset('Europe/Amsterdam'), 1, 6) || ']') from dual;
DUMP('['||SUBSTR(TZ_OFFSET('EUROPE/AMSTERDAM'),1,6)||']')
---------------------------------------------------------
Typ=1 Len=8: 91,43,48,49,58,48,48,93
... ou les replace()
ou trim()
options mentionnées dans les commentaires; ou toute autre chose qui supprime le personnage voyou; pair:
rtrim(tz_offset('Europe/Amsterdam'), chr(0))
Comme les bogues ne sont pas visibles dans MoS, je ne sais pas quand (ou si) il a été corrigé. On dirait qu'il existe dans 11.2.0.0, et je vois quelque chose dans 11.2.0.4 - il peut être corrigé dans 12c. Je ne le vois pas en 12.1.0.2.
Fonctionne pour moi - http://rextester.com/DMQSU85214 – GurV
C'est étrange, ce n'est pas pour moi - https://snag.gy/wigrFJ.jpg – Koen
Même cela a fonctionné correctement ici - http: // rextester .com/ESB48246 Vous ne savez pas ce qui cause le problème dans votre cas. – GurV