2013-03-18 106 views
1

我正在设计一个网站接受我的网站的广告。我的网站将获得有效的广告列表(已验证的广告和剩余的信用),并将显示它们。我的广告表有这些字段验证一则广告:计算选择日期范围

  • TotalDaysToShow诠释“总天数的广告将展示
  • 起始日期日期时间
  • 验证位
  • LastShowed日期时间

我想举个例子来展示4个广告 - 使用类似下面的查询:

SELECT TOP 4 ImageId, 
      Url 
FROM ads 
WHERE verified = 1 AND .......... 
ORDER BY LastShowed ASC 

这里的问题是,如果TotalDaysToShow是所有广告我可以简单地使用相同的:

declare @d= dateadd(day, @TotalDaysToShow, starttime),然后用它喜欢:

SELECT TOP 4 ImageId, 
      Url 
FROM ads 
WHERE verified = 1 
     AND @d > Getdate() 
ORDER BY LastShowed ASC 

是否有可能来计算的话为他们每个人?

SELECT TOP 4 ImageId, 
      Url 
FROM ads 
WHERE verified = 1 
     AND Dateadd(day, TotalDaysToShow, startdate) > Getdate() 
ORDER BY LastShowed ASC 

在此先感谢

回答

1

是的,但我相信,因为它表字段比较两个常量,你会发现这个SQL子句更有效

AND startdate BETWEEN Dateadd(day, -TotalDaysToShow, getdate()) AND getdate() 

+0

非常感谢你的工作很棒 – 2013-03-18 10:02:22