У меня есть таблица, которая представляет подписку пользователя на нашу систему. У меня две таблицы. Один представляет собой подписку на учетную запись, а другой - тип подписки. Таблица подписки относится к таблице типа подписки с полем subscriptionTypeID в таблице типов подписки. Мне нужно выяснить оставшиеся дни для этой учетной записи. Вот мой пример:SQL вычисляет оставшиеся дни на основе интервала дней (с использованием SQL Server 2005)?
Пользователь зарегистрировался 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 заявление, поэтому у меня нет, чтобы получить термин отдельно.
Update:
Вот что я теперь получил всю вашу помощь, но я все равно хочу более elgant способ накачать термин значение поля в запросе:
Select (DateDiff(day,getDate(),DATEADD (day , 30, '01/01/2010'))) days
Update 2.0;)
Иногда ответ прямо передо мной, и я даже не вижу его. Я склонен к проблемам мысли и усложнять их, чем они должны быть. Спасибо всем, кто помог! HEre - это код:
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
Да, но каждый тип подписки может иметь свой собственный термин. Каким будет самый элегантный способ скомпоновать поле term с текущей датой даты/подписки? Кроме того, я хотел бы получить количество дней назад, я должен использовать его для другого процесса, например автоматизированные электронные письма, сообщающие, что абонент подписывает подписку. – DDiVita
Вы хотите проверить все свои записи сразу или одну конкретную запись за раз? –