Я хочу попробовать получить запись, которая не регистрируется за последние 30 дней. Я попробовал, и у меня также были записи, но они отображают данные из базы данных, которые регистрируются до 30 дней. Но я хочу показать, кто не регистрируется с последних 30 дней с текущей даты, и я могу их отключить.
Я пытаюсь выполнить запрос на sql
select distinct CmsUserLogTime.UserId
from CmsUserLogTime
right join CmsUser on CmsUserLogTime.UserId = CmsUser.Id
where CmsUserLogTime.LoginLogoutTime <= DateAdd(Day, -30, GetDate())
order by 1 asc
Я просто хочу сравнить текущую дату и последние 30 дней, и я могу получить записи.
Благодарю.
Использование NOT IN
select
CmsUserLogTime.UserId
from CmsUserLogTime
inner join CmsUser on CmsUserLogTime.UserId = CmsUser.Id
where CmsUserLogTime.UserId in (select UserID from CmsUserLogTime group by UserID having max(LoginLogoutTime) <= dateadd(day,-30,getdate()))
Обратите внимание: поскольку вы не возвращаете столбцы из таблицы CmsUser
, я не вижу необходимости JOIN
к нему, но оставил его, если вам действительно нужны столбцы из этой таблицы.
Используйте DATEADD в предложении WHERE:
...
WHERE CmsUserLogTime.LoginLogoutTime < DATEADD(day, -30, GETDATE())
Вы также можете использовать аббревиатуру d или dd вместо дня.