Ошибки вызываются объявлениями tmp.Start_Int
, которые, я думаю, вы пытаетесь вставить значения в таблицу базы данных с именем tmp.
Вам необходимо изменить:
Set tmp.Start_Int = Datepart(HH,Start_Time)+'00'
быть примерно таким:
update dbo.tmp set tmp.Start_Int = Datepart(HH,Start_Time)+'00'
Также вы можете рассмотреть возможность использования курсора для чтения ваших данных.
РЕДАКТИРОВАНИЕ
Не могли бы вы использовать следующее в качестве основы?
declare @tmp table (Start_Time datetime)
insert into @tmp (Start_Time) values ('1-Oct-2011 21:02')
insert into @tmp (Start_Time) values ('1-Oct-2011 21:12')
insert into @tmp (Start_Time) values ('1-Oct-2011 21:22')
insert into @tmp (Start_Time) values ('1-Oct-2011 21:32')
insert into @tmp (Start_Time) values ('1-Oct-2011 21:42')
insert into @tmp (Start_Time) values ('1-Oct-2011 21:52')
select
Start_Time,
(case
when Datepart(MI,Start_Time) > 0 and datepart(MI, Start_Time) < 15
then cast(Datepart(HH,Start_Time) as varchar(5))+'00'
when Datepart(MI,Start_Time) > 15 and datepart(MI, Start_Time) < 30
then cast(Datepart(HH,Start_Time) as varchar(5))+'15'
when Datepart(MI,Start_Time) > 30 and datepart(MI, Start_Time) < 45
then cast(Datepart(HH,Start_Time) as varchar(5))+'30'
when Datepart(MI,Start_Time) > 45
then cast(Datepart(HH,Start_Time) as varchar(5))+'45'
end) as Start_Int
from @tmp
Возвращает
Start_Time Start_Int
----------------------- ---------
2011-10-01 21:02:00.000 2100
2011-10-01 21:12:00.000 2100
2011-10-01 21:22:00.000 2115
2011-10-01 21:32:00.000 2130
2011-10-01 21:42:00.000 2130
2011-10-01 21:52:00.000 2145