2016-03-09 3 views
0

Как можно пересчитать число месяцев в месяц, если есть следующие записи:Конвертировать месяц число в месяц имя из двух таблиц

например.

select date from tableClient; 

17.01.07 
18.02.08 
18.03.08 
18.04.08 
18.05.08 
18.06.08 
18.07.08 
18.08.08 

Ожидаемый результат:

17.January.07 
18.February.08 
18.March.08 
18.April.08 
...... 

Как конвертировать только ММ от этой записи?

PS. Я должен написать один запрос, где существует два или три условия, например.

select id, firstName, lastName, date from tableClient, tableActivity 
where tableClient.id = tableActivity.id and tableActivity.status= 'YES' 
AND tableActiviy.type = 'SMS'; 

Состояние: дата должна быть в форме: напр. 01.January.03

+0

Что такое тип данных столбца 'date' - это' date' или строковые типы данных, такие как 'varchar2/nvarchar' и т. Д. ... – Praveen

ответ

1

Вы должны использовать to_char() функцию с trim() функцией, чтобы избавиться от лишних пробелов после названия месяца:

select trim(to_char(sysdate, 'dd.Month')) || '.' || to_char(sysdate,'yy') from dual; 

С вашего примера:

select id, firstName, lastName, trim(to_char(date, 'dd.Month')) || '.' || to_char(date,'yy') 
from tableClient, tableActivity 
where tableClient.id = tableActivity.id and tableActivity.status= 'YES' 
AND tableActiviy.type = 'SMS'; 
+0

Не нужно использовать 'TRIM', используйте' FM'. –

+0

Вы правы, это еще короче: 'select (to_char (sysdate, 'dd.fmMonth.yy')) from dual;' – Darkwing

-1

Попробуйте для SQL Server,

SELECT FORMAT(date,'dd.MMMM.yy') AS date 
FROM tableClient; 

Пример,

enter image description here

+0

«Формат»: неверный идентификатор. Я работаю в SQL-разработчике –

+0

В FOREX нет ни 'FORMAT', ни' now() '. –

+0

Есть ли упоминание SQL-сервера в вопросе? –

0

Использование TO_CHAR с FMMONTH на дисплей даты в вашем желаемом формате ,

С documentation,

Формат Модель Модификаторы

В FM и FX модификаторы, используемые в моделях формата в функции TO_CHAR , контроль пустой отступы и точной проверки формата.

Модификатор может отображаться в формате формата более одного раза. В таком случае каждое последующее событие переключает эффекты модификатора. Его эффекты разрешены для части модели, следующей за ее первым , а затем отключены для части, следующей за ее секундой, а затем повторно подключены к части, следующей за ее третьим, и поэтому on.

FM Fill режим. Oracle использует конечные пустые символы и ведущие нули для заполнения элементов формата до постоянной ширины. Ширина равна ширине отображения наибольшего элемента для соответствующего формата модели:

Например,

SQL> SELECT to_char(SYSDATE, 'DD-FMMONTH-YY') FROM DUAL; 

TO_CHAR(SYSDATE 
--------------- 
09-MARCH-16 

SQL> SELECT to_char(to_date('17.01.07','dd.mm.yy'), 'DD-fmMONTH-fmYY') FROM DUAL; 

TO_CHAR(TO_DATE 
--------------- 
17-JANUARY-07 
+0

Это работает, но в течение года показывает .6, а не 06 .. –

+0

@ GoranBartBartolić См. Другой пример. Используйте 'fmYY'. Не нужно явно использовать 'trim', это необязательно, просто используйте' fm'. –

+0

@ GoranBartBartolić Пожалуйста, отметьте это как ответ, поможет другим. –