powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вывод диапазона элементов в цикле
8 сообщений из 8, страница 1 из 1
Вывод диапазона элементов в цикле
    #39323291
olga802005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне нужно вывести на экран диапазон дат с 10.10.2012 (формат дд.мм.ггг) по настоящее время

делаю так
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
ALTER SESSION SET NLS_DATE_FORMAT='dd.mm.yyyy HH24:MI:SS';
DECLARE 
VarDate Date:='10.10.2005';
BEGIN
	LOOP
		VarDate:=VarDate+1;	
		dbms_output.put_line(VarDate);
		EXIT WHEN VarDate = '08.10.2016';    
	END LOOP;
END;



Только у меня выдается в таком формате и через SYSDATE выдает ошибку авторORA-01841: (full) year must be between -4713 and +9999, and not be 0
10/11/2005
10/12/2005
10/13/2005
10/14/2005
10/15/2005
10/16/2005
10/17/2005
10/18/2005
10/19/2005
10/20/2005
10/21/2005
….
...
Рейтинг: 0 / 0
Вывод диапазона элементов в цикле
    #39323292
olga802005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
* с 10.10.2005
...
Рейтинг: 0 / 0
Вывод диапазона элементов в цикле
    #39323305
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
'05.06' - это 5-е июня или 6-е мая?

Изучите типы данных.
...
Рейтинг: 0 / 0
Вывод диапазона элементов в цикле
    #39323306
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон, ALTER SESSION не приметил.
Но типы данных и форматирование вывода (to_char) все же изучите.
...
Рейтинг: 0 / 0
Вывод диапазона элементов в цикле
    #39323318
olga802005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сделала так

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
DECLARE 
VarDate Date:='10.10.2005';
DateEnd Date:=to_char(SYSDATE, 'dd.mm.yyyy');
BEGIN
	LOOP
		VarDate:=VarDate+1;	
		dbms_output.put_line(to_char(VarDate, 'dd.mm.yyyy'));
		EXIT WHEN VarDate=DateEnd;
	END LOOP;
END;



все правильно отображается. Но не сделала ли я лишних явных преобразований?
...
Рейтинг: 0 / 0
Вывод диапазона элементов в цикле
    #39323334
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть одно лишнее.

Вот еще повод trunc изучить.

И критерий выхода из цикла на всякий случай (вдруг trunc забудете) изменил.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
ALTER SESSION SET NLS_DATE_FORMAT='dd.mm.yyyy HH24:MI:SS';


DECLARE 
VarDate Date:='10.10.2005';
DateEnd Date:=trunc(SYSDATE);
BEGIN
  LOOP
    VarDate:=VarDate+1;  
    dbms_output.put_line(to_char(VarDate, 'dd.mm.yyyy'));
    EXIT WHEN VarDate >= DateEnd;
  END LOOP;
END;
...
Рейтинг: 0 / 0
Вывод диапазона элементов в цикле
    #39323335
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olga802005сделала так

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
DECLARE 
VarDate Date:='10.10.2005'; -- Никогда так не надо делать.
-- Используйте либо date literal либо to_date с маской
DateEnd Date:=to_char(SYSDATE, 'dd.mm.yyyy'); -- Никогда не выполняйте to_char над датой, если не требуется преобразование типа данных. 
-- В данном случае выполняется явное преобразование даты к строке, за которым следует неявное приведение строки к дате.
-- Для отбрасывания часов-минут-секунд к sysdate следует применить truncate 
BEGIN
	LOOP
		VarDate:=VarDate+1;	
		dbms_output.put_line(to_char(VarDate, 'dd.mm.yyyy')); -- довольно бессмысленная операция. 
-- Зачем вообще генерировать данные, которые сложно нормально использовать?
		EXIT WHEN VarDate=DateEnd;
	END LOOP;
END;




Код: plsql
1.
2.
VarDate Date:=date'2005-10-10'; 
DateEnd Date:=trunc(SYSDATE, 'dd');



А на самом деле тот, код дал Вам это задание, скорее всего ожидает что-то вроде
Код: plsql
1.
select date'2005-10-09'+rownum dt from dual connect by level <= sysdate-date'2005-10-09'


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


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