2009-12-21 161 views
0

如何通過VBA將日期/時間與Access數據庫中的日期/時間進行比較?通過VBA與Access DB中的日期/時間比較日期/時間

查詢我使用

adoRS.Open "SELECT * FROM currentpositions WHERE ((currentpositions. 
[dateLT])=" & "#" & date_from_message & "#" & ")", adoConn, adOpenStatic, 
adLockOptimistic 

我只能達到比較的日期。
有人有想法嗎?

問候
Camastanta

+0

你的日期格式是什麼? – 2009-12-21 18:49:37

回答

3
adoRS.Open "SELECT * FROM currentpositions WHERE DateValue(currentpositions. 
[dateLT]) = DateValue(" & "#" & date_from_message & "#)", adoConn, adOpenStatic, 
adLockOptimistic 

看,如果上面的幫助。
DateValue從給定日期/時間提取日期部分。所以,它可以用來比較日期,忽略時間部分。

2

恕我直言,你不應該使用字符串連接來建立你的SQL語句。請使用parameterized SQL queries。這樣可以避免您遇到日期/時間比較問題。

+0

我不同意。當您必須返回維護和測試代碼時,使用參數化SQL查詢更難以使用。 – 2009-12-21 22:48:44

+0

我想說這取決於你插入字符串的值來自哪裏。如果它來自控件,則用戶無法輸入自由文本,您在Access中完全安全。具有日期掩碼的文本字段或只能使用日期選擇器控件編輯的文本字段不會受到任何形式的SQL注入的影響。 – 2009-12-22 00:19:25

+0

@Tony:你爲什麼覺得難以維護? @David:我不認爲這只是SQL注入的問題。它還可以避免日期格式問題等。另外,如果Access應用程序由SQL Server支持,則參數化查詢允許SQL Server緩存提供更好性能的查詢計劃。 – 2009-12-30 20:15:51

0

您的系統的日期是yyyy-mm-dd還是dd-mm-yyyy格式?如果是這樣,請參閱Return Dates in US #mm/dd/yyyy# format以mm-dd-yyyy格式轉換您的日期,以便Access可以正常使用它們。