我的应用程序中的编码器我有一些用户填写的详细信息,输入详细信息并按下提交按钮后它将存储在数据库中。我有与该表单相关的位值,以便当用户输入详细信息并单击“提交”按钮时,该位变为真。
我想要的是在一天后该位自动变为假我怎么能这样做
答案 0 :(得分:0)
SQL Server没有办法执行“Elapsed-Time”触发器。您只能在插入/更新/删除等触发数据更改...
我建议的是,不是存储位值,而是存储datetime
。
因此,当用户填写表单并勾选方框时,请不要存储位值,而是将DateTime
列设置为getdate()
然后更改依赖于此列的任何逻辑来测试以查看列中的值是否为>距离当前时间1天。
if( DateDiff(day, your_column, getdate()) >= 1 ) --more than 1 day has elapsed.
答案 1 :(得分:0)
我想提出一个不同的方法。
这就是我要做的事情:
我会存储点击发生的日期和时间,而不是存储实际的布尔值。因此,我会使用bit
列而不是Date
列。
稍后,当试图(被动地,不主动地)确定是否已经过了一天 我会从当前日期时间中减去该特定列中的存储值,并检查它是否会产生一整天。
它是这样的:
// instead of this
row[column] = true;
// do this
row[other_column] = DateTime.UtcNow;
以及您要测试值的位置:
// instead of this
if ((bool)row[column]) { ... }
// do this
DateTime dateAndTimeOfClick = (DateTime)row[other_column];
bool isStillTrue = DateTime.UtcNow - dateAndTimeOfClick < TimeSpan.FromDays(1);
if (isStillTrue) { ... }