日期:2014-05-17  浏览次数:20530 次

请教,批量补充当月缺失日期的数据。
有张表是这样的:
id shijian jieguo
1 2011-08-19 13:01:05.000 有

其中id是自动编号的,shijian这字段应该是每月连续的,jieguo都按“有”添加吧。
补充shijian中在当月中缺失的日期,如果有缺失的日期按照缺失的日期值添加,时间随机在13:00:00到14:00:00之间。
我想写个SQL语句每月月末执行一次。自己不会,请帮助。

------解决方案--------------------
我的代码可能不能直接使用,你建个测试数据库,把代码全部复制过去,运行试试呢?
或者加我QQ,254113859.

调整了生成随机时间的方法。
SQL code

--插入截至到昨天的连续随机日期到表t
DECLARE @start_date datetime;
DECLARE @insert_date datetime;
DECLARE @today datetime = getdate();

SET @start_date = CAST ( (CONVERT(varchar(7),GETDATE(),120)+'-01') AS datetime);
SET @start_date = DATEADD(hour,13,@start_date);
SET @insert_date = @start_date    

SET @insert_date = @insert_date + rand() * 1.0/24

--当下一条要插入的数据小于当前日期执行
WHILE   DATEPART(day,@insert_date) < DATEPART(day,@today)
BEGIN
    INSERT INTO t VALUES ( @insert_date,'有' );
    --准备15:00-16:00的数据
    SET @insert_date =CAST(  CONVERT(varchar(10),@insert_date,120) as datetime);
    SET @insert_date = DATEADD(HOUR,15,@insert_date);
    SET @insert_date = @insert_date + rand() * 1.0/24

    INSERT INTO t VALUES ( @insert_date,'无' );
    --准备第二天的数据
    SET @insert_date = DATEadd(day,1,CAST(  CONVERT(varchar(10),@insert_date,120) as datetime));
    SET @insert_date = DATEADD(HOUR,13,@insert_date);
    SET @insert_date = @insert_date + rand() * 1.0/24

END
GO