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

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

где НЕКОТОРАЯ_ТАБЛИЦА любая таблица в БД.
Но у этого запроса есть один недостаток:
в НЕКОТОРАЯ_ТАБЛИЦА должно быть не менее КОНЕЧНАЯ_ДАТА-НАЧАЛЬНАЯ_ДАТА+1 строк.
Может можно как-то по другому сделать цыкл - без использования таблиц?
...
Рейтинг: 0 / 0
20.05.2002, 06:27:52
    #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
21.05.2002, 06:51:45
    #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
Период между сообщениями больше года.
16.07.2010, 12:02:01
    #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
16.07.2010, 12:04:43
    #36744836
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
список дат
__Marusya__,

8 лет кануло, а тег SRC в этой ветке так и не прижился.
...
Рейтинг: 0 / 0
16.07.2010, 12:14:14
    #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
16.07.2010, 12:17:27
    #36744876
orawish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
список дат
-2-__Marusya__,

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

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

Кажется, это рекорд некропостинга...
...
Рейтинг: 0 / 0
20.07.2010, 15:18:00
    #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
20.07.2010, 17:06:04
    #36750682
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
список дат
UScorpnick,
Уже была такая тема

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

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

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

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

Какой полет инженерной мысли!
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
27.09.2016, 12:22:23
    #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
27.09.2016, 13:02:57
    #39316204
список дат
Ни и добью))
Список дат + N дней

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

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


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