powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / список дат
18 сообщений из 18, страница 1 из 1
список дат
    #32030604
nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как получить список дат начиная с НАЧАЛЬНАЯ_ДАТА и кончая КОНЕЧНАЯ_ДАТА?
Впринципе меня устраивает запрос типа

select НАЧАЛЬНАЯ_ДАТА+rownum-1 dt
from НЕКОТОРАЯ_ТАБЛИЦА
where rownum < КОНЕЧНАЯ_ДАТА-НАЧАЛЬНАЯ_ДАТА+2

где НЕКОТОРАЯ_ТАБЛИЦА любая таблица в БД.
Но у этого запроса есть один недостаток:
в НЕКОТОРАЯ_ТАБЛИЦА должно быть не менее КОНЕЧНАЯ_ДАТА-НАЧАЛЬНАЯ_ДАТА+1 строк.
Может можно как-то по другому сделать цыкл - без использования таблиц?
...
Рейтинг: 0 / 0
список дат
    #32030608
none
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я тоже помню, в свое время ломал голову, как решить аналогичную вашей, уважаемый niсk, задачу. Нужно было выводить месяц и кол-во чего-то там за каждый день месяца. И кроме того, что ниже, ничего, увы, в голову не пришло:
SELECT * FROM (
SELECT 1 AS Day FROM DUAL UNION ALL
SELECT 2 AS Day FROM DUAL UNION ALL
SELECT 3 AS Day FROM DUAL UNION ALL
SELECT 4 AS Day FROM DUAL UNION ALL
SELECT 5 AS Day FROM DUAL UNION ALL
SELECT 6 AS Day FROM DUAL UNION ALL
SELECT 7 AS Day FROM DUAL UNION ALL
SELECT 8 AS Day FROM DUAL UNION ALL
SELECT 9 AS Day FROM DUAL UNION ALL
SELECT 10 AS Day FROM DUAL UNION ALL
SELECT 11 AS Day FROM DUAL UNION ALL
SELECT 12 AS Day FROM DUAL UNION ALL
SELECT 13 AS Day FROM DUAL UNION ALL
SELECT 14 AS Day FROM DUAL UNION ALL
SELECT 15 AS Day FROM DUAL UNION ALL
SELECT 16 AS Day FROM DUAL UNION ALL
SELECT 17 AS Day FROM DUAL UNION ALL
SELECT 18 AS Day FROM DUAL UNION ALL
SELECT 19 AS Day FROM DUAL UNION ALL
SELECT 20 AS Day FROM DUAL UNION ALL
SELECT 21 AS Day FROM DUAL UNION ALL
SELECT 22 AS Day FROM DUAL UNION ALL
SELECT 23 AS Day FROM DUAL UNION ALL
SELECT 24 AS Day FROM DUAL UNION ALL
SELECT 25 AS Day FROM DUAL UNION ALL
SELECT 26 AS Day FROM DUAL UNION ALL
SELECT 27 AS Day FROM DUAL UNION ALL
SELECT 28 AS Day FROM DUAL UNION ALL
SELECT 29 AS Day FROM DUAL UNION ALL
SELECT 30 AS Day FROM DUAL UNION ALL
SELECT 31 AS Day FROM DUAL
) A, PblIndaysCounts B
WHERE B.DayID(+)=
TO_NUMBER(TO_CHAR(SYSDATE,'YYYYMM')||DECODE( SIGN(A.Day-10), -1, '0'||A.Day, A.Day))

Ну а почему бы вам не остановиться на вашем же варианте? Ведь с точки отсчета прошло немного-нимало чуть менее 731 тысячи дней. Думаю, такой объем записей из одного столбца ничуть не нагрузит базу.
...
Рейтинг: 0 / 0
список дат
    #32030741
nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кому интересно.

Вот что мне ответил Вячеслав Лейчинский.

SELECT *
FROM TABLE(cast ( ORDSYS.Calendar.TimeStampsBetween(
ORDSYS.ORDTCalendar(0,'Daily',4,ORDSYS.ORDTPattern(ORDSYS.ORDTPatternBits(1),'01.01.2001'),
'01.01.2001','31.03.2001',ORDSYS.ORDTExceptions(),ORDSYS.ORDTExceptions()),
'01.01.2001','31.03.2001') as ORDSYS.ORDTDateTab))

Поподробнее - это здесь
Oracle8i Time Series User's Guide (зависит от версии)
http://technet.oracle.com/docs/products/oracle8i/doc_library/817_doc/inter.817/a67294/toc.htm
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
список дат
    #36744827
__Marusya__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Список дат от начальной до конечной

WITH t
AS (SELECT t.begdate, (t.enddate - t.begdate + 1) n
FROM (SELECT TO_DATE ('29.01.2001', 'dd.mm.yyyy') begdate,
TO_DATE ('05.02.2001', 'dd.mm.yyyy') enddate
FROM DUAL) t)
SELECT (t.begdate + dubl.lvl - 1) f_oper_date
FROM t
INNER JOIN
( SELECT LEVEL lvl
FROM DUAL
CONNECT BY LEVEL <= ( SELECT MAX (n) FROM t)) dubl
ON t.n >= dubl.lvl

Результат

F_OPER_DATE

29.01.2001
30.01.2001
31.01.2001
01.02.2001
02.02.2001
03.02.2001
04.02.2001
05.02.2001
...
Рейтинг: 0 / 0
список дат
    #36744836
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Marusya__,

8 лет кануло, а тег SRC в этой ветке так и не прижился.
...
Рейтинг: 0 / 0
список дат
    #36744868
Алымов Анатолий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
Select to_date('11.12.2005','dd.mm.yyyy') + Level -  1  From dual Connect By Level <= to_date('16.12.2005','dd.mm.yyyy') - to_date('11.12.2005','dd.mm.yyyy') +  1 
...
Рейтинг: 0 / 0
список дат
    #36744876
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-__Marusya__,

8 лет кануло, а тег SRC в этой ветке так и не прижился.
да ладно - первый пост же.. :)

2 __Marusya__,
качество восприятия ваших скриптов резко повысится, если перед публикацией вы
будете обрамлять их тегом SRC (текст надо выделить и кнопку [src] вжать)
...
Рейтинг: 0 / 0
список дат
    #36749994
pomornik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алымов Анатолий,
спасибо приогромное!))
...
Рейтинг: 0 / 0
список дат
    #36750026
ALocky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orawish
да ладно - первый пост же.. :)

Кажется, это рекорд некропостинга...
...
Рейтинг: 0 / 0
список дат
    #36750400
UScorp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nick,

Уже была такая тема, не стал искать, выложу сохраненный у меня результат

Код: plaintext
1.
2.
3.
4.
5.
SELECT 
  LEVEL AS Num,
  :pBegDate + LEVEL -  1  AS MyDate
FROM dual 
START WITH :pBegDate <= :pEndDate
CONNECT BY :pBegDate + LEVEL -  1  <= :pEndDate
...
Рейтинг: 0 / 0
список дат
    #36750682
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UScorpnick,
Уже была такая тема

Эт да... Была такая тема... ТС, скорее всего будет рад узнать, что на вопрос заданный им 20 мая 2002-го года в 2010 уже нашлось более красивое решение.
...
Рейтинг: 0 / 0
список дат
    #36750714
ALocky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
envUScorpnick,
Уже была такая тема

Эт да... Была такая тема... ТС, скорее всего будет рад узнать, что на вопрос заданный им 20 мая 2002-го года в 2010 уже нашлось более красивое решение.
Представляю себя как он жил все эти годы...
...
Рейтинг: 0 / 0
список дат
    #36750847
UScorp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ALocky,

А, точно
...
Рейтинг: 0 / 0
список дат
    #36751413
Хэнк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот это вот тронуло до глубины души:

Код: plaintext
1.
TO_NUMBER(TO_CHAR(SYSDATE,'YYYYMM')||DECODE( SIGN(A.Day- 10 ), - 1 , '0'||A.Day, A.Day))

Какой полет инженерной мысли!
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
список дат
    #39316171
Ну и я отмечусь некропостингом))
Запрос от Алымов Анатолий, только с указанием необходимого диапазона дат один раз

Код: plsql
1.
2.
3.
4.
5.
SELECT beg_date + LEVEL - 1
FROM   (SELECT TO_DATE('01.01.2016', 'dd.mm.yyyy') beg_date,
               TO_DATE('31.12.2016', 'dd.mm.yyyy') end_date
        FROM   dual)
CONNECT BY LEVEL <= end_date - beg_date + 1
...
Рейтинг: 0 / 0
список дат
    #39316204
Ни и добью))
Список дат + N дней

Код: plsql
1.
2.
3.
SELECT SYSDATE + LEVEL
FROM   dual
CONNECT BY LEVEL < N
...
Рейтинг: 0 / 0
список дат
    #39316212
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
редконосюдазахаживающий, - заходилбытыещереже.
...
Рейтинг: 0 / 0
список дат
    #39316408
nata44845
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
редконосюдазахаживающий,

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


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