SQL Server语句

变量定义

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
上一篇:Part11 数据库搭建


下一篇:Mysql sql语句整合 四