嗨,我的应用程序中的编码器我有一些用户填写的详细信息,在输入详细信息并按下提交按钮后,它将存储在数据库中。我有与该表单相关联的位值,因此当用户输入详细信息并单击提交按钮时,位变为 true。
我想要的是一天之后那个位会自动变成错误我该怎么做
嗨,我的应用程序中的编码器我有一些用户填写的详细信息,在输入详细信息并按下提交按钮后,它将存储在数据库中。我有与该表单相关联的位值,因此当用户输入详细信息并单击提交按钮时,位变为 true。
我想要的是一天之后那个位会自动变成错误我该怎么做
SQL Server 没有办法执行“Elapsed-Time”触发器。您只能在插入/更新/删除等上触发数据更改...
我的建议是,不要存储位值,datetime
而是存储 a 。
因此,当用户填写您的表单并勾选一个框时,不要存储位值,而是将DateTime
列设置为getdate()
然后更改依赖此列的任何逻辑以测试该列中的值是否距离当前时间 > 1 天。
if( DateDiff(day, your_column, getdate()) >= 1 ) --more than 1 day has elapsed.
我想提出一种不同的方法。
这就是我要做的:
我不会存储实际的布尔值,而是存储点击发生的日期和时间。因此,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) { ... }