У меня есть таблица, которая представляет подписку пользователя на нашу систему. У меня есть две таблицы. Один представляет подписку для учетной записи, а другой представляет тип подписки. Таблица подписки относится к таблице типов подписки с полем subscriptionTypeID в таблице типов подписки. Мне нужно выяснить дни, оставшиеся для этого аккаунта. Вот мой пример:
Пользователь зарегистрировался 1 января 2010 года и его срок составляет 30 дней. Исходя из сегодняшней даты (25 января 2010 г.) у них осталось 6 дней.
Мне нужна помощь в разработке SQL. Вот что у меня есть в моей хранимой процедуре:
@SubscriptionTypesID int
Declare @term int
Declare remainder int
Set @term = (SELECT subscriptionTerm
FROM dbo.SubscriptionTypes
where dbo.SubscriptionTypes.SubscriptionTypesID = @SubscriptionTypesID)
Теперь мне нужно выяснить, что делать с оставшимся запросом или можно ли каким-то образом иметь один оператор SQL, чтобы мне не приходилось получать термин отдельно.
Обновление:
Вот что я получил сейчас со всей вашей помощью, но я все еще хочу более изящный способ закачивать значение поля термина в запрос:
Select (DateDiff(day,getDate(),DATEADD (day , 30, '01/01/2010' ))) days
Обновление 2.0;)
Иногда ответ прямо передо мной, и я даже не вижу его. Я склонен переосмысливать проблемы и усложнять их, чем они должны быть. Спасибо всем, кто помог! Вот код:
SELECT (DateDiff(day,getDate(),DATEADD (day , subscriptionTerm, dbo.Subscriptions.subscriptionDate ))) days
FROM
dbo.Subscriptions
INNER JOIN dbo.SubscriptionTypes ON (dbo.Subscriptions.subscriptionTypeID = dbo.SubscriptionTypes.SubscriptionTypesID)
WHERE
dbo.Subscriptions.userID = 129