变量定义
declare @DATE_1 datetime
set @DATE_1=GETDATE()-90
print @DATE_1
declare @DATE_1 datetime 声明DATE_1变量,数据类型为datetime。
set @DATE_1=GETDATE()-90 为变量DATE_1赋值
print @DATE_1 打印DATE_1变量
内置函数datediff
查询30天前的数据
select * from zxm10_telemeter.dbo.nms_telemeter_2_2002 where datediff(dd,report_time,getdate()-30)<=0;
说明:report_time为表zxm10_telemeter.dbo.nms_telemeter_2_2002中的时间字段,dd为天,getdate()函数获取当前日期减去30配合dd获取30天前当天的日期,最后<=0获取30天前的日期。
删除3个月之前的数据
说明:对于大表,直接delete * 很耗费时间,不如先查出要删除的数据,追加到一个新表,然后再truncate要删除数据的表,再从新表把数据追加回来。
步骤1:将30天之前的数据追加到新表
select * into [new_telemeter].[dbo].[nms_telemeter_2_1035]
from [zxm10_telemeter].[dbo].[nms_telemeter_2_1035]
where datediff(dd,report_time,getdate()-30) <= 0
注意:最后一定要是<=号。
步骤2:清空要删除数据的表
truncate table [zxm10_telemeter].[dbo].[nms_telemeter_2_1036]
步骤3:追加数据到要删除数据的表
insert into [zxm10_telemeter].[dbo].[nms_telemeter_2_1036](device_id,mete_id,report_time,report_value,report_kind,write_time) ( select device_id,mete_id,report_time,report_value,report_kind,write_time
from [new_telemeter].[dbo].[nms_telemeter_2_1036])
delete删除
delete from [zxm10_telemeter].[dbo].[nms_telemeter_2_60
where datediff(dd,report_time,getdate()-30)= 0