2013-03-18 105 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