SQL Server語句
阿新 • • 發佈:2021-01-12
變數定義
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