先建立一個dimdate的structure五木有古弟母而致皆,繼時先貶利孝高道然後直接用procedure生成數據南順中古聰悔仕南。非亂子斷閹確定起始日期和結束日期五木有古弟母而致皆,繼時先貶利孝高道然後就插入記錄了南順中古聰悔仕南。非亂子斷閹
下面是基本的代碼五木有古弟母而致皆,繼時先貶利孝高道你可以再加入你自己需要的function
declare
@start_date datetime
,@end_date datetime
,@loop_day datetime
,@diff int
,@loop int
Select
@start_date ='1996-01-01'
,@end_date = '1998-12-31'
,@loop = 0
select
@diff = datediff(dd,@start_date,@end_date)
while @loop <= @diff
begin
select @loop_day = dateadd(dd,@loop,@start_date)
insert into dimDate
select
convert(varchar,@loop_day,112),
@loop_day,
dayOfWeek=case datepart(weekday,@loop_day)
when 1 then 7
else datepart(weekday,@loop_day)-1
end,
DATENAME(WEEKDAY, @loop_day),
day(@loop_day),
1+datediff(dd,dateadd(yy,datediff(yy,0,@loop_day),0),@loop_day),
DATEPART("week",@loop_day),
month(@loop_day),
DATENAME(month, @loop_day),
year(@loop_day),
'Q'+cast (datepart(qq,@loop_day) as char),
isweekend=case datepart(weekday,@loop_day)
when 1 then 'yes'
when 6 then 'yes'
when 7 then 'yes'
else 'no'
end
select @loop = @loop + 1
end
*******************************
create table table1(the_date datetime)
declare @i int
select @i=datediff(day,'2001-01-01',getdate())
while (@i>0)
begin
insert into table1 (the_date) select dateadd(day,@i,'2001-01-01')
select @i=@i-1
end
********************************
declare @b datetime
set @b = '2001-1-1'
while @b <= getdate()
begin
insert into yourtable (the_date, the_day, the_month) values
(@b, day(@b), month(@b))
set @b = dateadd(day, @b, 1)
end
select * from yourtable
*****************
declare @b datetime
set @b = '2001-1-1'
while @b <= getdate()
begin
insert into yourtable (the_date, the_day, the_month) values
(@b, day(@b), month(@b))
set @b = dateadd(day, 1, @b)
end
select * from yourtable
*******************
1,建序數表
select top 8000 identity(int,0,1) as N into numtab from
(select top 100 id=1 from sysobjects) as a,
(select top 100 id=1 from sysobjects) as b,
(select top 100 id=1 from sysobjects) as c
2,
insert into 表(the_date,the_day,the_month)
select n+cast('2001-01-01' as datetime)
,day(n+cast('2001-01-01' as datetime))
,month(n+cast('2001-01-01' as datetime))
from Numtab
where n+cast('2001-01-01' as datetime)>getdate()
********************
創建臨時表
select top 55152 identity(int,1,1) as iid into #tmp
from sysobjects a,sysobjects b,sysobjects c
select * from #tmp
生成時間維語句
select *,dateadd(day,iid-1,'1949-01-01') as 日期,
year(dateadd(day,iid-1,'1949-01-01')) as 年份,
month(dateadd(day,iid-1,'1949-01-01')) as 月份,
day(dateadd(day,iid-1,'1949-01-01')) as 日期,
datepart(quarter,(dateadd(day,iid-1,'1949-01-01'))) as 季度,
datepart(weekday,(dateadd(day,iid-1,'1949-01-01'))) as 星期,
day(dateadd(day,iid-1,'1949-01-01')) as 月的第幾表,
datepart(week,(dateadd(day,iid-1,'1949-01-01'))) as 年的第幾周
from #tmp