Что делает Конкат? - PullRequest
0 голосов
/ 09 мая 2019

Что делает '09' в этом коде?

select CONCAT(TRIM((EXTRACT(YEAR FROM TO_DATE(TO_CHAR(sysdate,'mm/dd/yyyy'),'mm/dd/yyyy')))),(TRIM((TO_CHAR(EXTRACT(MONTH FROM sysdate), '09')))))
from dual

Ответы [ 2 ]

2 голосов
/ 09 мая 2019

'09' является частью вызова to_char(), а не concat(). Это модель формата , применяемая к извлеченному номеру месяца, когда он преобразуется в строку. Без этого вы бы получили 5:

select TO_CHAR(EXTRACT(MONTH FROM sysdate))
from dual;

TO_CHAR(EXTRACT(MONTHFROMSYSDATE))      
----------------------------------------
5

Указание этой маски формата означает, что вы получаете ведущий ноль для номеров месяцев ниже десяти.

select TO_CHAR(EXTRACT(MONTH FROM sysdate), '09')
from dual;

TO_
---
 05

Затем вы обрезаете начальное пространство, но вы можете избежать этого, добавив FM к этой маске:

select TO_CHAR(EXTRACT(MONTH FROM sysdate), 'FM09')
from dual;

TO_
---
05

Другие области тоже странные; преобразование sysdate в строку и обратно в дату кажется бессмысленным, и у вас есть множество скобок, которые вам не нужны, и избыточная обрезка. Вы можете упростить до:

select CONCAT(EXTRACT(YEAR FROM sysdate), TO_CHAR(EXTRACT(MONTH FROM sysdate), 'FM09'))
from dual;

CONCAT(EXTRACT(YEARFROMSYSDATE),TO_CHAR(EXT
-------------------------------------------
201905

или с оператором конкатенации:

select EXTRACT(YEAR FROM sysdate) || TO_CHAR(EXTRACT(MONTH FROM sysdate), 'FM09')
from dual;

EXTRACT(YEARFROMSYSDATE)||TO_CHAR(EXTRACT(M
-------------------------------------------
201905

или вообще не рассматривайте год и месяц как отдельные числовые элементы:

select TO_CHAR(sysdate, 'YYYYMM')
from dual;

TO_CHA
------
201905
1 голос
/ 09 мая 2019

09 - это определение формата в функции TO_CHAR для форматирования чисел.Ведущий ноль добавляется к однозначному числу.

Пример: 7 будет возвращено как 07

См. Модели форматирования Oracle для получения более подробной информации о различных форматах

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...