/*从实时库中读取数据,实时库报数规则为当前报讯时间为前一时段记录时间,
因此从实时库同步到预报库时,需要对时间进行处理,同步得到实际报讯时间。
如:实时库中
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