Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2010, 12:51   #1
Ks2010
Пользователь
 
Регистрация: 08.07.2010
Сообщений: 62
По умолчанию имя переменной в теле цикла

вот такой вопрос появился:
мне надо в цикле сравнивать одну дату с другой - первая постоянная вторая ппеременная
я хотела сделать что-то типа
Код:
DATEDIFF(dd, @date1, @date_i)
где i-переменная величина
т.е. сначала сравнивается с @date_1, потом с @date_2.. и т.д.
но я не знаю как мне записать имя переменной ( @date_i - так естественно не катит)
помогите, пожалста.. а то я не разобралась ещё с логикой обозначения переменных в sql
Ks2010 вне форума Ответить с цитированием
Старый 12.11.2010, 13:17   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
@date_i - так естественно не катит
Это почему? Что тут естественного?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.11.2010, 14:02   #3
Ks2010
Пользователь
 
Регистрация: 08.07.2010
Сообщений: 62
По умолчанию

ну.....
надо задать такую переменную @date_i, её тип (datetime), потом как-то обозначить - в смысле set @date_i = ????????
а вот как я не знаю
у меня в начале есть
set @date_1 ='20101010'
set @date_2 ='20100510'
...
как в цикле пробежаться по всем.. не знаю....
Ks2010 вне форума Ответить с цитированием
Старый 12.11.2010, 15:08   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

судя по всему на Транзакт-SQL (под MS SQL сервер) пишете?

я делал примерно так (цикл от @pd1 до @pd2):
Код:
	set @dCur = @pd1
	
	While  (@dCur <= @pd2)
	  begin	    
	    
                 -- тут запрос, который использует дату @dCur
	    if NOT EXISTS(select count(*) from @dt_status s
	               where @dCur between status_date_beg and status_date_end
	    begin     
	      set @ResultDays = @ResultDays + 1
	    end  	    

	    -- перейдём на следующую дату
	    set @dCur = DATEADD(day, 1, @dCur)
	  end

    RETURN @ResultDays


К слову...
Цитата:
Код:
set @date_1 ='20101010'
ИМХО, для задания даты лучше использовать принудительный формат через Convert,
мне кажется так будет универсальнее и надёжнее:
Код:
set @date_1 = CONVERT(date, '31.12.2010', 104)
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Имя переменной Alex Cones Общие вопросы Delphi 9 09.07.2010 21:04
Паскаль. использование условного оператора в теле операторов цикла с условием и после него машко Помощь студентам 1 22.06.2009 00:52
использование условного оператора в теле оператора цикла с условием машко Помощь студентам 2 21.06.2009 23:55
Имя переменной как переменная. Как получить доступ к такой переменной? Denni Microsoft Office Access 8 02.04.2009 10:06
Вывести имя переменной wall66 PHP 11 13.12.2008 10:48