根据日期范围查找记录
Finding a record based on range of date
我对 SQL 很陌生。基本上我有一个数据库,其中有一个名为 "Date" 的列,我想 return 所有条目,使得 "Date" 在 startDate
和 endDate
[=14 之间=]
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 表单日期时间选择器。
不确定哪里出错了,但查询 return 根本没有任何问题。
如果你设置'dd/MM/yyyy',SQL会return错误'The conversion of a varchar data type to a DateTime data type resulted in an out-of-range value.'我认为你应该设置如下格式。
ad.SelectCommand.Parameters.AddWithValue("@date1", frm.StartDate.Value.ToString("yyyy/MM/dd"))
ad.SelectCommand.Parameters.AddWithValue("@date2", frm.EndDate.Value.ToString("yyyy/MM/dd"))
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)
我对 SQL 很陌生。基本上我有一个数据库,其中有一个名为 "Date" 的列,我想 return 所有条目,使得 "Date" 在 startDate
和 endDate
[=14 之间=]
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 表单日期时间选择器。
不确定哪里出错了,但查询 return 根本没有任何问题。
如果你设置'dd/MM/yyyy',SQL会return错误'The conversion of a varchar data type to a DateTime data type resulted in an out-of-range value.'我认为你应该设置如下格式。
ad.SelectCommand.Parameters.AddWithValue("@date1", frm.StartDate.Value.ToString("yyyy/MM/dd"))
ad.SelectCommand.Parameters.AddWithValue("@date2", frm.EndDate.Value.ToString("yyyy/MM/dd"))
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)