This code will populate a date/time table for a cube or any other purpose in SQL Server.

declare
	@start datetime,
	@end datetime,
	@date datetime,
	@hour int
select
	@start = '2011-08-01 00:00',
	@end =   '2013-01-01 00:00'
set @date = @start
while @date < @end
	begin
		set @hour = 0
		while @hour < 24
			begin
				insert into [date]([id], yeardate, monthdate, daydate, hourdate,[year], [month], [day], [hour])
				values(
					ltrim(datepart(year, @date)) + '-' + ltrim(datepart(month, @date)) + '-' + ltrim(datepart(day, @date)) + ' ' + str(@hour) + ':00',
					ltrim(datepart(year, @date)) + '-01-01 00:00',
					ltrim(datepart(year, @date)) + '-' + ltrim(datepart(month, @date)) + '-01 00:00',
					ltrim(datepart(year, @date)) + '-' + ltrim(datepart(month, @date)) + '-' + ltrim(datepart(day, @date)) + ' 00:00',
					ltrim(datepart(year, @date)) + '-' + ltrim(datepart(month, @date)) + '-' + ltrim(datepart(day, @date)) + ' ' + str(@hour) + ':00',
					datepart(year, @date),
					datepart(month, @date),
					datepart(day, @date),
					@hour)
				set @hour = @hour + 1;
			end
		set @date = dateadd(day, 1, @date)
	 end