0

嗨,我的应用程序中的编码器我有一些用户填写的详细信息,在输入详细信息并按下提交按钮后,它将存储在数据库中。我有与该表单相关联的位值,因此当用户输入详细信息并单击提交按钮时,位变为 true。

我想要的是一天之后那个位会自动变成错误我该怎么做

4

2 回答 2

0

SQL Server 没有办法执行“Elapsed-Time”触发器。您只能在插入/更新/删除等上触发数据更改...

我的建议是,不要存储位值,datetime而是存储 a 。

因此,当用户填写您的表单并勾选一个框时,不要存储位值,而是将DateTime列设置为getdate()

然后更改依赖此列的任何逻辑以测试该列中的值是否距离当前时间 > 1 天。

if( DateDiff(day, your_column, getdate()) >= 1 ) --more than 1 day has elapsed.
于 2013-09-11T09:05:45.900 回答
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) { ... }
于 2013-09-11T09:06:44.733 回答