2012-08-23 54 views
4

對於有經驗的開發人員來說,這可能是非常簡單的場景,但作爲一名初學者,我一直在這方面呆了很長時間。我正在asp.net中創建一個用戶可以購買軟件包的網站。這些包有一些與它們相關的有效期限(例如購買後2個月,6個月等)。如何在達到日期後過期SQL Server中的特定行?

問題是如何確切地在相同的日期和時間,根據購買日期計算每個包裝的到期日。如何做這件事?

我正在使用SQL Server express edition 2008和asp.net 4.0。

+0

「expire」是什麼意思?從數據庫中刪除?將某個字段標記爲「已過期」? – robert

+0

閱讀關於觸發器 –

+1

@WaqarJanjua它不是一個觸發器,如果​​它在n個月後。 – Meryovi

回答

0

取決於你的意思是過期了一下 - 你要刪除的數據,標誌備案,或者只是隱藏數據一個來自用戶的屏幕。

無論使用哪種方式,您都需要將到期日期作爲列添加到表(?包)中,並將計算的到期日保存到此列中。

然後,您有多種選擇,如:

  • 運行作業刪除/到期記錄一旦過期,即CURRENT_TIMESTAMP is > ExpiryDate(SQL Express版本沒有SQL代理,所以你需要寫例如一個Windows服務或鉤入Windows任務計劃程序來執行此操作)。
  • 或者,將您的應用程序更改爲'檢查'ExpiryDate的值(例如DateTime.Now >= ExpiryDate),然後鎖定用戶從UI中取出/隱藏軟件包。
+0

可能是windows服務可以在這種情況下工作。我會先嚐試這個選項。 – vivek

6

,而不是刪除的記錄,你可以把一個WHERE子句中的地方這將基於其到期日期排除記錄:

SELECT PackageName 
FROM Package 
WHERE ExpiryDate>GETDATE() 

不過,如果你仍想從數據庫中刪除它們,你可以把SQL Job在其中運行每天/小時等,這將刪除記錄的有效期已屆滿的地方:

DELETE FROM Package 
WHERE ExpiryDate<GETDATE() 
+0

。謝謝 – vivek

相關問題