日期:2014-05-18  浏览次数:20594 次

求一条比较复杂的sql语句
现在有一张表结构是这样的:
DAY_KEY int (主键)
DAY_DATE datetime
MONTH_KEY int
CURRENT_MONTH smallint
CURRENT_YEAR smallint
DAY_OF_WEEK smallint
DAY_OF_MONTH smallint
DAYS_IN_MONTH smallint
MONTH_TC nvarchar(25)
WEEKDAY_TC nvarchar(25)
表中的数据情况是这样的:
20120301 2012-03-01 00:00:00.000 201203 3 2012 4 1 31 三月 四
20120302 2012-03-02 00:00:00.000 201203 3 2012 5 2 31 三月 五
20120303 2012-03-03 00:00:00.000 201203 3 2012 6 3 31 三月 六
20120304 2012-03-04 00:00:00.000 201203 3 2012 7 4 31 三月 日
20120305 2012-03-05 00:00:00.000 201203 3 2012 1 5 31 一月 一

先要要求写一条sql,如果现在的时间是2012年2月29号,就写入的是第一条数据,如果今天是2012年3月1号就写入的是第二条数据,反正就是写入的第二天的一个数据,包括:星期几,多少号,这个月多少天...等信息
请问哪位能帮忙写出来,感谢!



------解决方案--------------------
SQL code
declare @dt datetime
set @dt = dateadd(day, datediff(day, 0, getdate()), 0)+1
select 
    cast(convert(varchar, @dt, 112) as int), -- DAY_KEY int 
    @dt, -- DAY_DATE datetime
    cast(convert(varchar(6), @dt, 112) as int), -- MONTH_KEY int
    datepart(month, @dt), -- CURRENT_MONTH smallint
    datepart(year, @dt), -- CURRENT_YEAR smallint
    datepart(weekday, @dt) - 1, -- DAY_OF_WEEK smallint
    datepart(day, @dt), -- DAY_OF_MONTH smallint
    datepart(day, dateadd(month, datediff(month, 0, @dt)+1, 0)-1), -- DAYS_IN_MONTH smallint
    -- 下面这两个中文信息预存在某个配置表或字典表中,关联取出吧。
    -- MONTH_TC nvarchar(25) 
    -- WEEKDAY_TC nvarchar(25)
    getdate()