SQL 如果今天结束,自动设置 date_out
SQL set date_out automatically if today ends
我有一个访客系统。当访客签到时,它会设置一个 date_in。当访客结帐时,它会设置 date_out.
但如果访客忘记结账。它说他没有 date_out 所以我想弄清楚如果访问者没有结帐如何设置 date_out。
一个例子:
入住时间:2015-01-19 12:00:00
客人当天忘记退房。
所以如果日期是:2015-01-19 23:59:59。我希望它在 date_out.
上自动设置
因为在另一个查询中,我要求所有没有 date_out 的访问者显示。这样我就可以看到那天谁在大楼里了。
有没有办法自动执行此操作?
Table结构
date_in设置为访客使用姓名签到
您可以创建一个每天运行 23:59:59 的作业,用数据填充 date_out。
我的建议 - 不要编辑数据(并且随后无法识别 23:59 的真实签出),只需更新查询:
SELECT * /* TODO - actual columns */
FROM visits
WHERE
date_out IS NULL AND
date_in >= DATEADD(day,DATEDIFF(day,0,CURRENT_TIMESTAMP),0)
表达式 DATEADD(day,DATEDIFF(day,0,CURRENT_TIMESTAMP),0)
只是 "midnight at the start of today" 的一种表达方式。
上述查询应该会为您提供与您所要求的结果相同的结果,但保留实际记录的数据不变。也就是说,只报告今天进入但没有离开的人。
我建议不要更改记录数据的原因是万一您决定稍后更改规则 - 即使用与一天不同的时间间隔来考虑访客已经离开。
假设您的数据在一行中,您可以定期更新值:
update visitors
set check_out = cast(convert(varchar(10), date_in, 121) + ' 23:59:59') as datetime)
where check_out is null;
这可以在您闲暇时完成,而不是保证在特定时间运行完成某些工作。
我有一个访客系统。当访客签到时,它会设置一个 date_in。当访客结帐时,它会设置 date_out.
但如果访客忘记结账。它说他没有 date_out 所以我想弄清楚如果访问者没有结帐如何设置 date_out。
一个例子:
入住时间:2015-01-19 12:00:00 客人当天忘记退房。 所以如果日期是:2015-01-19 23:59:59。我希望它在 date_out.
上自动设置因为在另一个查询中,我要求所有没有 date_out 的访问者显示。这样我就可以看到那天谁在大楼里了。
有没有办法自动执行此操作?
Table结构
date_in设置为访客使用姓名签到
您可以创建一个每天运行 23:59:59 的作业,用数据填充 date_out。
我的建议 - 不要编辑数据(并且随后无法识别 23:59 的真实签出),只需更新查询:
SELECT * /* TODO - actual columns */
FROM visits
WHERE
date_out IS NULL AND
date_in >= DATEADD(day,DATEDIFF(day,0,CURRENT_TIMESTAMP),0)
表达式 DATEADD(day,DATEDIFF(day,0,CURRENT_TIMESTAMP),0)
只是 "midnight at the start of today" 的一种表达方式。
上述查询应该会为您提供与您所要求的结果相同的结果,但保留实际记录的数据不变。也就是说,只报告今天进入但没有离开的人。
我建议不要更改记录数据的原因是万一您决定稍后更改规则 - 即使用与一天不同的时间间隔来考虑访客已经离开。
假设您的数据在一行中,您可以定期更新值:
update visitors
set check_out = cast(convert(varchar(10), date_in, 121) + ' 23:59:59') as datetime)
where check_out is null;
这可以在您闲暇时完成,而不是保证在特定时间运行完成某些工作。