用于在两个日期之间检索数据的SQL查询

时间:2014-01-15 14:46:54

标签: mysql sql sql-server

我写了以下代码:

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()

我想检索两个日期选择器中的两个日期之间的数据。

我试过BETWEEN,我也试过> = =<但是虽然数据库包含数据但结果是空的。请帮助我出错的地方

2 个答案:

答案 0 :(得分:2)

您的代码可能会生成错误。执行此类查询时,应在替换后存储查询字符串并将其打印出来。你似乎在日期周围缺少分隔符。所以这可能适用于您的具体情况。

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

但是,您需要注意日期的格式。应用程序层和数据库可能使用不同的格式。如果您直接替换查询字符串,则使用格式YYYY-MM-DD - 它是ISO标准日期格式,通常可以理解。

更好的方法是学习如何参数化查询,以便实际将日期值作为日期参数传递。

答案 1 :(得分:0)

如果您正在使用MS Access,则应该是语法...

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

如果你正在使用MS SQL Server或MySQL,那么就这样做......

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