我正在使用以下 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 用作发送给用户的电子邮件消息中的变量,以警告他们登录。我一直在用头撞墙试图让它工作。我错过了一些明显的东西