2017-09-12 57 views
0

我想通過記錄一天的日期來保留90天前的日期。 Tablonun ismi:etl.PackageExecutionDuration 我希望記錄被刪除90天。要比較的列名稱:created_time。這將是90天前的23點59分59秒。 我該怎麼做?我如何從getdate()到90天永久地獲得大日期?

我已經完成了以下查詢,但有一個更簡單的方式或形狀?

DELETE etl.PackageExecutionDuration where created_time< (select CONVERT(datetime, 
    DATEADD(SECOND,-1, 
    CONVERT(datetime, 
    CONVERT(date, 
    CONVERT(datetime, 
    DATEADD(DAY, -89, GETDATE()))))))) 
+0

什麼數據類型是'created_time'?你能不能僅僅做'... where created_time Xedni

回答

0
DELETE etl.PackageExecutionDuration where created_time< (select CONVERT(datetime, 
    DATEADD(SECOND,-1, 
    CONVERT(datetime, 
    DATEADD(DAY, -11, GETDATE()))))) 

這真查詢

1

簡化爲:

where created_time <= cast(dateadd(day, -90, getdate()) as date) 
+0

它會在90天前的23:59:59例如:01:01:2017 23: 59:59 –

0
DELETE etl.PackageExecutionDuration where created_time< (select CONVERT(datetime, 
    DATEADD(milisecond,-1, 
    CONVERT(datetime, 
    CONVERT(date, 
    CONVERT(datetime, 
    DATEADD(DAY, -89, GETDATE()))))))) 
+1

歡迎來到Stack Overflow,@ emre。一些解釋以及你提供的代碼不僅有助於個人提出這個問題,而且也有助於未來閱讀這個問題的所有人。 – Degan

+0

第一和最後'轉換(datetime's似乎是不必要的。 –

+0

DELETE etl.PackageExecutionDuration其中CREATED_TIME <(選擇CONVERT(日期時間, DATEADD(SECOND,-1, CONVERT(日期時間, DATEADD(DAY,-11,GETDATE ()))))) –

相關問題