根据日期范围查找记录

时间:2017-02-23 03:06:20

标签: sql vb.net sqldataadapter

我对SQL很新。基本上我有一个名为“Date”的列的数据库,我想返回所有条目,使“Date”介于startDateendDate之间

Dim myStr As String = String.Format("Select * from {0} where [Date] between @date1 and @date2", databaseTableName)

Dim ad As New SqlDataAdapter(myStr, sqlConn)

ad.SelectCommand.Parameters.AddWithValue("@date1", frm.StartDate.Value.ToString("dd/MM/yyyy"))
ad.SelectCommand.Parameters.AddWithValue("@date2", frm.EndDate.Value.ToString("dd/MM/yyyy"))

其中frm是Windows窗体日期时间选择器。

不确定我哪里出错但查询根本没有返回任何内容。

2 个答案:

答案 0 :(得分:1)

Dim myStr As String = String.Format("SELECT * FROM {0} WHERE [Date] >= @date1 AND < @date2", databaseTableName)

Dim ad As New SqlDataAdapter(myStr, sqlConn)

ad.SelectCommand.Parameters.Add("@date1" SqlDbType.DateTime).Value = frm.StartDate.Value.Date
ad.SelectCommand.Parameters.Add("@date2", SqlDbType.DateTime).Value = frm.EndDate.Value.Date.AddDays(1)

答案 1 :(得分:-1)

如果设置&#dd / MM / yyyy&#39;,SQL将返回错误&#39;将varchar数据类型转换为DateTime数据类型会导致超出范围的值。 #39;我认为您应该将格式设置如下。

ad.SelectCommand.Parameters.AddWithValue("@date1", frm.StartDate.Value.ToString("yyyy/MM/dd"))
ad.SelectCommand.Parameters.AddWithValue("@date2", frm.EndDate.Value.ToString("yyyy/MM/dd"))