1

我正在设计一个网站来接受我网站的广告。我的网站将获得有效广告列表(经过验证且有信用的广告)并显示它们。我的广告表有这些验证广告的字段:

  • TotalDaysToShow int '广告展示的总天数
  • 开始日期日期时间
  • 验证位
  • 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

提前致谢

4

1 回答 1

1

是的,但我相信你会发现这个 SQL 子句更有效率

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

因为它将表字段与两个常量进行比较。

于 2013-03-18T09:59:24.870 回答