2012-07-27 201 views
1

我使用經典ASP,並具有以下的VB腳本代碼ASP SQL Server的日期範圍和日期時間字段

From8to14 = date-14 
To8to14 = date-8 

這將設置兩個變量。

在今天,這將意味着

From8to14 = "13/07/2012" 
To8to14 = "19/07/2012" 

然後我有一個選擇查詢的SQL服務器,我想找到任何記錄中,其中DateMatched列之間(含)這兩個日期

當我聲明它時,SQL中有兩個條件;現在

"AND INTRAY.DateMatched >= '"& Year(From8to14) &"-"& Month(From8to14) &"-"& Day(From8to14) &"' " & _ 
"AND INTRAY.DateMatched <= '"& Year(To8to14) &"-"& Month(To8to14) &"-"& Day(To8to14) &"' " & _ 

,這是不正常,因爲DateMatched柱還包括除了日期時間,我想在服務器interepreting這些日期的那一天開始是在半夜?

因此,如果一條記錄的DateMatched爲「2012年7月19日17時41分22秒」,那麼它不包括在內。

我該如何解決這個問題?

回答

1

試試這個。

"AND INTRAY.DateMatched >= dateadd(day, datediff(day, 0, getdate())-14, 0)" & _ 
"AND INTRAY.DateMatched < dateadd(day, datediff(day, 0, getdate())-7, 0)" & _ 
+1

+1這一個得到我的投票,它聞起來更好。通過字符串連接的SQL組合應該最小化並在使用時受到挑戰。 – AnthonyWJones 2012-07-27 13:40:53

1

變化

To8to14 = date-8 

To8to14 = date-7 

然後你就會從午夜走在-14th一天夜半至第七名的一天,這將包括所有-8th一天。

或者,如果你想成爲真正的精確,離開To8to14因爲它是,並且最終改變

... Day(To8to14) &" 23:59:59' 

你也可以使用BETWEEN而非> =和< =

+0

+1但他應該使用'> =和<'代替'between';結束日期是獨家 – Andomar 2012-07-27 12:13:21