2011-04-21 40 views
0

在Access 2000中,我們可以使用哪個函數來取回日期值?如何在Access中查詢日期

 
CreateDate 
20/4/2010 2:32:00 AM 
20/4/2010 2:32:00 PM 
19/4/2010 10:14:00 AM 
17/5/2010 9:34:00 PM 

如果我查詢:

SELECT * FROM tblTest WHERE CreateDate <= #20/4/2010# 

我只看到19/4/2010記錄。

其實,結果應該顯示前3條記錄,不是嗎?

回答

2

您的文字日期值#20/4/2010#實際上是一個日期/時間值,代表4月20日午夜。請參閱立即窗口中的示例,該窗口使用Format()函數顯示完整日期/時間值由該文字表示。

? Format(#20/4/2010#, "d/m/yyyy hh:nn:ss AMPM") 
20/4/2010 12:00:00 AM 

因此,無論20/4/2010上午02時32分00秒和20/4/2010下午2時32分00秒是由你的WHERE條件排除,因爲他們都大於20/4/2010 12: 00:00 AM。

如果您在Access會話中運行查詢,則可以使用DateValue()函數將您的CreateDate值轉換爲同一日期的午夜。此查詢應返回您所期望的內容:

SELECT * FROM tblTest WHERE DateValue(CreateDate) <= #20/4/2010# 

另一種方法是將一天後的午夜用作截止值。

SELECT * FROM tblTest WHERE CreateDate < #21/4/2010# 

第二查詢可以顯著更快地執行,因爲它不會需要應用則DateValue()函數在TBLTEST每CREATEDATE值。如果CreateDate被索引,第二個查詢仍然會更快。第一個查詢將無法利用CreateDate上的索引。

此外,我更喜歡使用的文字值的明確的日期格式,所以會寫這樣的查詢:

SELECT * FROM tblTest WHERE CreateDate < #2010/4/21# 
+0

謝謝你,HansUp。我清楚了。 – soclose 2011-04-21 07:17:09