Результаты функции Oracle Decode в разных форматах - PullRequest
3 голосов
/ 04 октября 2010
SELECT DECODE (SYSDATE, SYSDATE + 1, NULL, SYSDATE)
  FROM DUAL;


SELECT DECODE (SYSDATE, SYSDATE + 1, TO_DATE (NULL), SYSDATE)
  FROM DUAL;

Почему я получаю результаты в разных форматах из запросов выше?

Я использую Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi

1 Ответ

5 голосов
/ 04 октября 2010

Результат функции decode имеет тип данных третьего параметра.В первом случае, поскольку для NULL тип данных не указан, используется VARCHAR2 по умолчанию.Во втором случае явно запрашивается ДАТА, и поэтому результатом является дата.

Другими словами, первый запрос такой же, как:

SELECT DECODE(SYSDATE, SYSDATE + 1, to_char(NULL), to_char(SYSDATE)) FROM DUAL;

Вывод этогозапрос будет отформатирован в соответствии с параметром сеанса NLS_DATE_FORMAT, а второй запрос вернет дату, которая будет отображаться в соответствии с настройками клиента.

...