Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 И снова манипулирование датами  [new]
ded-mazay
Member

Откуда:
Сообщений: 260
Доброго времени уважаемые!

select '['||to_char(trunc(sysdate), 'iw')||'] '||trunc(sysdate, 'iw') from dual
покажет
[19] 10.05.2010

Нужен запрос кот. выведет 19 строк начиная с первой недели с начала года по текущую..
Осуществимо?
13 май 10, 11:16    [8765976]     Ответить | Цитировать Сообщить модератору
 Re: И снова манипулирование датами  [new]
JaRo
Member

Откуда:
Сообщений: 1659
ТОП №11
13 май 10, 11:19    [8765999]     Ответить | Цитировать Сообщить модератору
 Re: И снова манипулирование датами  [new]
AmKad
Member

Откуда:
Сообщений: 5222
ded-mazay,

Что-то наподобие?
select trunc(trunc(sysdate, 'year') + level * 7, 'iw'), rownum
from dual
connect by level < 20
13 май 10, 11:19    [8766001]     Ответить | Цитировать Сообщить модератору
 Re: И снова манипулирование датами  [new]
AmKad
Member

Откуда:
Сообщений: 5222
AmKad
ded-mazay,

Что-то наподобие?
select trunc(trunc(sysdate, 'year') + level * 7, 'iw'), rownum
from dual
connect by level < 20

select trunc(trunc(sysdate, 'year') + level * 7, 'iw'), rownum
from dual
connect by trunc(trunc(sysdate, 'year') + level * 7, 'iw') <= trunc(sysdate, 'iw')
13 май 10, 11:23    [8766032]     Ответить | Цитировать Сообщить модератору
 Re: И снова манипулирование датами  [new]
ded-mazay
Member

Откуда:
Сообщений: 260
AmKad
AmKad
ded-mazay,

Что-то наподобие?
select trunc(trunc(sysdate, 'year') + level * 7, 'iw'), rownum
from dual
connect by level < 20

select trunc(trunc(sysdate, 'year') + level * 7, 'iw'), rownum
from dual
connect by trunc(trunc(sysdate, 'year') + level * 7, 'iw') <= trunc(sysdate, 'iw')


Не работает
13 май 10, 11:37    [8766139]     Ответить | Цитировать Сообщить модератору
 Re: И снова манипулирование датами  [new]
SQLap
Member [заблокирован]

Откуда:
Сообщений: 34063
ded-mazay,

select '['||to_char(trunc(sysdate, 'year') + rownum*7, 'iw')||'] '||trunc(trunc(sysdate,'year')+rownum*7, 'iw') from 
(select 1 from all_objects where rownum < 20)
13 май 10, 11:41    [8766165]     Ответить | Цитировать Сообщить модератору
 Re: И снова манипулирование датами  [new]
ded-mazay
Member

Откуда:
Сообщений: 260
SQLap,

Оно! Спасибо!!!
13 май 10, 11:42    [8766177]     Ответить | Цитировать Сообщить модератору
 Re: И снова манипулирование датами  [new]
SQLap
Member [заблокирован]

Откуда:
Сообщений: 34063
ded-mazay
AmKad
AmKad
ded-mazay,

Что-то наподобие?
select trunc(trunc(sysdate, 'year') + level * 7, 'iw'), rownum
from dual
connect by level < 20

select trunc(trunc(sysdate, 'year') + level * 7, 'iw'), rownum
from dual
connect by trunc(trunc(sysdate, 'year') + level * 7, 'iw') <= trunc(sysdate, 'iw')


Не работает


Это работает, но не на твоей версии.
13 май 10, 11:46    [8766210]     Ответить | Цитировать Сообщить модератору
 Re: И снова манипулирование датами  [new]
AmKad
Member

Откуда:
Сообщений: 5222
ded-mazay,

Какая версия Oracle?
Что значит не работает? Ошибка выполнения или конкатенацию руками написать не можете?
13 май 10, 12:04    [8766385]     Ответить | Цитировать Сообщить модератору
 Re: И снова манипулирование датами  [new]
Andrew (First)
Member

Откуда: Север, Югра
Сообщений: 163
А вот так приятнее :)
select '['||to_char(trunc(sysdate, 'year') + rownum*7, 'iw')||'] '||trunc(to_date(trunc(trunc(sysdate,'year') +rownum*7 -7, 'iw'))+4)  from 
(select null from all_objects where rownum < 54)
13 май 10, 13:51    [8767553]     Ответить | Цитировать Сообщить модератору
 Re: И снова манипулирование датами  [new]
AmKad
Member

Откуда:
Сообщений: 5222
Andrew (First)
А вот так приятнее :)
select '['||to_char(trunc(sysdate, 'year') + rownum*7, 'iw')||'] '||trunc(to_date(trunc(trunc(sysdate,'year') +rownum*7 -7, 'iw'))+4)  from 
(select null from all_objects where rownum < 54)

select     
trunc(trunc(sysdate, 'year') + (level - 1) * 7, 'iw') dw1, 
trunc(trunc(sysdate, 'year') + (level - 1) * 7, 'iw') + (trunc(sysdate, 'year') - trunc(trunc(sysdate, 'year'), 'iw')) dw2,
rownum
from dual
connect by trunc(trunc(sysdate, 'year') + (level - 1) * 7, 'iw') < trunc(add_months(sysdate, 12), 'year')
13 май 10, 14:23    [8767889]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить