11

对于有经验的开发人员来说,这可能是一个非常简单的场景,但作为一个初学者,我已经在这个问题上徘徊了很长时间。我正在 asp.net 中创建一个网站,用户可以在其中购买包。这些软件包有一些与之相关的到期日期(例如购买后 2 个月、6 个月等)。

问题是如何在我根据购买日期计算的相同日期和时间准确地使每个包裹过期。这件事怎么办?

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

4

2 回答 2

12

WHERE您可以放置​​一个条款,根据到期日期排除记录,而不是删除记录:

SELECT PackageName
FROM Package
WHERE ExpiryDate>GETDATE()

但是,如果您仍希望将它们从数据库中删除,您可以放置​​一个SQL 作业,该作业每天/每小时运行一次等,这将删除已过期的记录:

DELETE FROM Package
WHERE ExpiryDate<GETDATE()
于 2012-08-23T12:18:10.620 回答
1

取决于您所说的过期的含义-您是要删除数据,标记记录还是只是从用户屏幕上隐藏数据。

无论哪种方式,您都需要将到期日期作为列添加到表 (?packages) 中,并将计算出的到期日期保存到此列中。

然后,您可以选择:

  • 运行一个作业以在记录过期后删除/过期记录,即CURRENT_TIMESTAMP is > ExpiryDate(SQL Express 没有 SQL 代理,因此您需要编写一个 Windows 服务,或者挂接到 Windows 任务计划程序来执行此操作)。
  • 或者,将您的应用程序更改为“检查”ExpiryDate 的值(例如DateTime.Now >= ExpiryDate),然后将用户锁定在 UI 之外/隐藏包。
于 2012-08-23T12:20:55.590 回答