/*从实时库中读取数据,实时库报数规则为当前报讯时间为前一时段记录时间, 因此从实时库同步到预报库时,需要对时间进行处理,同步得到实际报讯时间。 如:实时库中 idtm , sttdrcd 2007-08-10 08:00:00 , 1 //日 2007-08-01 08:00:00 , 4 //月 2007-08-01 08:00:00 , 5 //旬 同步时,预报库为 idtm , sttdrcd 2007-08-09 08:00:00 , 1 2007-07-21 08:00:00 , 4 2007-07-01 08:00:00 , 5 */ SELECT id, idtm as old_idtm, sttdrcd, CASE sttdrcd WHEN 1 THEN DATEADD(dd, -1, idtm) WHEN 4 THEN (CASE WHEN DATEPART(dd, idtm) = 11 THEN DATEADD(dd, -10, idtm) WHEN DATEPART(dd, idtm) = 21 THEN DATEADD(dd, -10, idtm) WHEN DATEPART(dd, idtm) = 1 THEN DATEADD(dd, 20, DATEADD(mm, DATEDIFF(mm, 0, DATEADD(mm, -1, idtm)), 0)) /*得到上月份第一天,然后加上20天*/ END) WHEN 5 THEN DATEADD(mm, -1, idtm) WHEN 7 THEN DATEADD(yy, -1, idtm) END AS new_idtm FROM st_deal_b ORDER BY id