描述:表A,其中第一个列现在是float类型,数据从0到8759 就是一年365天的小时数的时间点
目的:想把它转化成日期的格式:'1月1日1时','1月1日2时'..'1月1日24时'..'1月2日1时...'一直到一年的结束,就按照2009年来算好了。
谢谢
目的:想把它转化成日期的格式:'1月1日1时','1月1日2时'..'1月1日24时'..'1月2日1时...'一直到一年的结束,就按照2009年来算好了。
谢谢
if object_id('tb') is not null
drop table tb
create table tb(Mth int, Days int)
declare @time datetime,
@currentTime datetime,
@month int
--当前月第一天
SET @currentTime = convert(varchar(8),getdate(),120) + '01 '
select @currentTime
SET @month = 1while @month <= 12
BEGIN
--由当前月第一天求出所有第month月的第一天
SET @time = dateadd(month,-month(@currentTime)+@month + 1,@currentTime)
insert into tb(Mth, Days) (select @month, day(DateAdd(dd,-1,@time)))
SET @month = @month + 1
END
select * from tb
drop table tb
/*
Mth Days
----------- -----------
1 31
2 28
3 31
4 30
5 31
6 30
7 31
8 31
9 30
10 31
11 30
12 31(12 行受影响)
*/
drop table Calendar
CREATE TABLE [dbo].Calendar (
[Id] [int] IDENTITY (1, 1) NOT NULL ,
[TheDate] [datetime] NULL ,
[TheDay] [nvarchar] (15) NULL ,
[TheHour] [varchar] (15) NULL,
[TheMonth] [nvarchar] (15) NULL ,
[TheYear] [smallint] NULL ,
[DayOfMonth] [smallint] NULL ,
[WeekOfYear] [smallint] NULL ,
[MonthOfYear] [smallint] NULL ,
[Quarter] [nvarchar] (2) NULL ,
[fiscal_period] [nvarchar] (20) NULL
) ON [PRIMARY]
DECLARE @WeekString varchar(12),
@dDate SMALLDATETIME,
@sMonth varchar(20),
@iYear smallint,
@iDayOfMonth smallint,
@iWeekOfYear smallint,
@iMonthOfYear smallint,
@sQuarter varchar(2),
@sSQL varchar(100),
@adddays int,
@TheHour intSELECT @adddays = 1 --日期增量(可以自由设定)
SELECT @dDate = '01/01/2009' --开始日期
SELECT @TheHour =0
WHILE @dDate <= '12/31/2009' --结束日期
BEGIN
SELECT @WeekString = DATENAME (dw, @dDate)
SELECT @sMonth=DATENAME(mm,@dDate)
SELECT @iYear= DATENAME (yy, @dDate)
SELECT @iDayOfMonth=DATENAME (dd, @dDate)
SELECT @iWeekOfYear= DATENAME (week, @dDate)
SELECT @iMonthOfYear=DATEPART(month, @dDate)
SELECT @sQuarter = 'Q' + CAST(DATENAME (quarter, @dDate)as varchar(1))
SELECT @TheHour = @TheHour+1
INSERT INTO Calendar
(TheDate,TheDay, TheMonth, TheYear, DayOfMonth, WeekOfYear,TheHour,
MonthOfYear, Quarter) VALUES
(@dDate, @WeekString, @sMonth, @iYear, @iDayOfMonth, @iWeekOfYear,@TheHour,
@iMonthOfYear, @sQuarter)
SELECT @dDate = dateadd(hh,1,@dDate)
END
GOselect * from Calendar--在你的库里生成这样一张表然后用这表的第四列去和你的表进行连接
取第一列值转换一下格式就行了