2014-01-15 81 views
0

我已經寫了下面的代碼之間的檢索數據:SQL查詢兩個日期

Dim date1 As Date 
Dim date2 As Date 

date1 = Convert.ToDateTime(DatePickerFromDate.Text) 
date2 = Convert.ToDateTime(DatePickerToDate.Text) 

Dim cnd As New OleDbCommand("SELECT * FROM Sales WHERE Invoice_Date BETWEEN " + date1 + " AND " + date2 + "", om) 
om.Open() 
Dim da As OleDbDataReader = cnd.ExecuteReader 
While da.Read() 
     ComboBox1.Items.Add(da(0)) 
End While 
da.Close() 
om.Close() 

我想那些從兩個datepickers採取兩個日期之間的檢索數據。

我試過BETWEEN,也試過> = = <但是結果是空的,儘管數據庫包含數據。請幫助我出錯的地方

+1

這是爲什麼用MySQL和SQL Server標記的?你正在使用哪個數據庫? –

回答

2

您的代碼可能會產生錯誤。當進行這種類型的查詢時,應在替換後存儲查詢字符串並將其打印出來。您似乎在日期周圍缺少分隔符。所以這可能適用於您的具體情況。

New OleDbCommand("SELECT * FROM Sales WHERE Invoice_Date BETWEEN '" + date1 + "' AND '" + date2 + "'", om) 

但是,您需要注意日期的格式。應用程序層和數據庫可能使用不同的格式。如果您直接替換查詢字符串,則使用YYYY-MM-DD格式 - 它是ISO標準的日期格式並且通常可以理解。

更好的是學習如何參數化查詢,以便實際上可以將日期值作爲日期參數傳遞。

+0

而不是得到一個錯誤,我看到發生的事情是像2014年1月15日這樣的日期被評估爲1除以15除以2014,結果爲零。然後零被愉快地視爲日期'1/1/1900'(至少對'datetime') –

+0

@ Gordon Linoff:我使用了MM/DD/YYYY格式。 Invoice_Date是數據類型日期,當我傳遞帶分隔符的查詢它顯示錯誤「標準表達式中的數據類型不匹配」 – Omkar

+0

@John Gibb:雅,它不顯示任何錯誤。可能是你說的問題。所以你有什麼解決方案的問題,我的意思是我應該做什麼修改查詢 – Omkar

0

如果您使用的MS Access,這應該是語法......

SELECT * FROM Sales WHERE Invoice_Date>=#" + date1 + "# and Invoice_Date<=#" + date2 + "#" 

如果您使用MS SQL服務器或MySQL,那麼做這樣的事情......

SELECT * FROM Sales WHERE Invoice_Date>='" + date1 + "' and Invoice_Date<='" + date2 + "'"