根据数据表中的其他日期计算禁用日期

问题描述 投票:0回答:0

我正在使用以下 SQL 返回 vb.net 中的数据表:

Select a.Name, a.ExternalUserName, a.Email, b.LastEnabledTime, b.LastLogonTime, b.NumLogonsSinceEnabled
, case when b.lastlogontime = cast('01/01/1900' as DATETIME) then 'Never Logged On' else ' ' end LogOnStatus
, case when b.lastlogontime = cast('01/01/1900' as DATETIME) then -1 else datediff(DD, b.lastlogontime, GETUTCDATE()) end Days

**, case when b.lastlogontime = cast('01/01/1900' as DATETIME) then dateadd(dd, b.lastenabledtime, 90) end DisableDate**

From UserTable a
Inner Join UserTableB b On a.Name = b.UserName
Where a.isenabled = 'TRUE' AND a.Name <> 'Administrator'
And (CASE WHEN b.lastlogontime = cast('01/01/1900' as DATETIME) THEN datediff(DD, b.lastenabledtime, GETUTCDATE())
WHEN b.lastenabledtime >= b.lastlogontime THEN datediff(DD, b.lastenabledtime , GETUTCDATE())
ELSE datediff(DD, b.lastlogontime, GETUTCDATE()) END) BETWEEN 9 AND 99
Order by case when b.lastlogontime = '01/01/1900  12:00:00 AM' then -1 else datediff(DD, b.lastlogontime, GETUTCDATE()) end
, a.name

我在上面代码中间的 dateadd() 函数上遇到了困难。我需要根据 lastenabledtime 或 lastlogontime(取决于哪个更大)创建一个 DisableDate 列。我不断收到数据类型错误,指出 datetime 不是 dateadd 函数参数 2 中使用的有效类型。

我的最终目标是将计算出的 DisableDate 用作发送给用户的电子邮件消息中的变量,以警告他们登录。我一直在用头撞墙试图让它工作。我错过了一些明显的东西

vb.net datetime datetime-format datediff dateadd
© www.soinside.com 2019 - 2024. All rights reserved.