powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Календарь
6 сообщений из 6, страница 1 из 1
Календарь
    #39498493
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть sql

Код: plsql
1.
2.
3.
4.
5.
6.
7.
WITH cte AS (SELECT TO_DATE ('01.08.2017', 'dd.mm.yyyy') AS max_dt, TO_DATE ('01.04.2017', 'dd.mm.yyyy') AS min_dt FROM DUAL),
	 cal AS
		 (	  SELECT ADD_MONTHS (min_dt, (LEVEL - 1)) AS mth
				FROM cte
		  CONNECT BY LEVEL <= MONTHS_BETWEEN (max_dt, min_dt) + 1)
SELECT *
  FROM cal



Выводит
Код: plsql
1.
2.
3.
4.
5.
01/04/2017
01/05/2017
01/06/2017
01/07/2017
01/08/2017



Но почему-то когда ставлю минимальную дату с 05.04.2017, получаю
Код: plsql
1.
2.
3.
4.
05/04/2017
05/05/2017
05/06/2017
05/07/2017




Можно ли сделать, чтоб минимальная дата влияла только на первое значение
Код: plsql
1.
2.
3.
4.
5.
05/04/2017
01/05/2017
01/06/2017
01/07/2017
01/08/2017
...
Рейтинг: 0 / 0
Календарь
    #39498495
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
  1  WITH cte AS (SELECT TO_DATE ('01.08.2017', 'dd.mm.yyyy') AS max_dt, TO_DATE ('05.04.2017', 'dd.mm.yyyy') AS min_dt
  2      cal AS
  3              (        SELECT decode(level,1,min_dt,ADD_MONTHS (trunc(min_dt,'mm'), (LEVEL - 1))) AS mth
  4                             FROM cte
  5               CONNECT BY LEVEL <= MONTHS_BETWEEN (max_dt, min_dt) + 1)
  6  SELECT *
  7*   FROM cal
SQL> /
05.04.17
01.05.17
01.06.17
01.07.17
SQL>



.....
stax
...
Рейтинг: 0 / 0
Календарь
    #39498498
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,

Код: plsql
1.
 MONTHS_BETWEEN (max_dt, trunc(min_dt,'month')) + 1)
...
Рейтинг: 0 / 0
Календарь
    #39498499
efendi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-=Koba=-,
Код: plsql
1.
2.
3.
4.
5.
6.
7.
WITH cte AS (SELECT TO_DATE ('01.08.2017', 'dd.mm.yyyy') AS max_dt, TO_DATE ('05.04.2017', 'dd.mm.yyyy') AS min_dt FROM DUAL),
   cal AS
     (    SELECT decode(ADD_MONTHS (min_dt, (LEVEL - 1)), min_dt, min_dt, TRUNC(ADD_MONTHS (min_dt, (LEVEL - 1)), 'MM')) AS mth
        FROM cte
      CONNECT BY LEVEL <= CEIL(MONTHS_BETWEEN (max_dt, min_dt) + 1))
SELECT *
  FROM cal
...
Рейтинг: 0 / 0
Календарь
    #39498500
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
envStax,

Код: plsql
1.
 MONTHS_BETWEEN (max_dt, trunc(min_dt,'month')) + 1)


я видел

то мелочи + 2

даж не знаю не очепятался ли Коба с 01/08/2017


.....
stax
...
Рейтинг: 0 / 0
Календарь
    #39498501
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да спасибо, то что надо
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Календарь
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]