过滤两个日期列之间的结果 [英] Filter results between 2 date columns
问题描述
我知道如何过滤1列内的日期,但是如何在2列之间过滤?
示例
选择*来自@startyear和@endyear之间的雇员雇用,sqlcon
sqladapt.SelectCommand.Parameters.AddWithValue(@ startyear,start.Text)
sqladapt.SelectCommand.Parameters.AddWithValue(@ endyear,end .Text)
单列有很多例子,但我在使用2个日期列时找不到多少。
有人可以帮我这个
我试过的:
我试过
SELECT * FROM [Employeetable] where [Hiredate]> @startyear和[Lastday]< @endyear, sqlcon
sqladapt.SelectCommand.Parameters.AddWithValue(@ startyear,start.Text)
sqladapt.SelectCommand.Parameters.AddWithValue(@ endyear,end.Text)
都是日期
我认为日期是作为日期存储在数据库中的吗?如果这是正确的,那么参数也应该是一个日期。
首先尝试将文本转换为日期时间,然后使用值作为参数。换句话说
...
DateTime startdate;
DateTime enddate;
if (!DateTime.TryParse(start.Text, out startddate)){
// 执行一些错误处理
}
if (!DateTime.TryParse(end.Text, out enddate)){
// 执行一些错误处理
sqladapt.SelectCommand.Parameters.AddWithValue( @ startyear,startdate)
sqladapt.SelectCommand.Parameters.AddWithValue( @ endyear,enddate)
...
您还可以设置数据类型添加参数时的参数请参阅 OleDbParameterCollection.Add方法(字符串,OleDbType)(System.Data.OleDb) [ ^ ]
附加:
---------
VB版
Dim startdate 正如 DateTime
Dim enddate As DateTime
如果(不 DateTime.TryParse(start.Text,startdate))然后
' 执行一些错误处理
结束 如果
如果(不 DateTime.TryParse( end .Text,enddate))然后
执行一些错误处理
结束 < span class =code-keyword>如果
sqladapt.SelectCommand.Parameters.AddWithValue( @startyear,startdate)
sqladapt.SelectCommand.Parameters.AddWithValue( @ endyear ,enddate)
I know how to filter dates inside of 1 column, but how do you filter between 2 columns?
Example
"Select * from Employeetable hiredate between @startyear and @endyear, sqlcon" sqladapt.SelectCommand.Parameters.AddWithValue("@startyear", start.Text) sqladapt.SelectCommand.Parameters.AddWithValue("@endyear", end.Text)
there are quite a few examples for a single column but I cannot find much on using 2 date columns.
can someone help me with this
What I have tried:
I have tried
"SELECT * FROM [Employeetable] where [Hiredate] > @startyear and [Lastday] < @endyear, sqlcon" sqladapt.SelectCommand.Parameters.AddWithValue("@startyear", start.Text) sqladapt.SelectCommand.Parameters.AddWithValue("@endyear", end.Text)
both are dates
I take it the dates are stored as dates in the database? If that is correct, then the parameter should also be a date.
Try converting the text into a datetime first and then use the value as parameter. In other words
... DateTime startdate; DateTime enddate; if (!DateTime.TryParse(start.Text, out startddate)) { // do some error handling } if (!DateTime.TryParse(end.Text, out enddate)) { // do some error handling sqladapt.SelectCommand.Parameters.AddWithValue("@startyear",startdate) sqladapt.SelectCommand.Parameters.AddWithValue("@endyear", enddate) ...
Also you can set the data type of the parameter when adding the parameter. See OleDbParameterCollection.Add Method (String, OleDbType) (System.Data.OleDb)[^]
ADDITION:
---------
VB version
Dim startdate As DateTime Dim enddate As DateTime If (Not DateTime.TryParse(start.Text, startdate)) Then ' do some error handling End If If (Not DateTime.TryParse(end.Text, enddate)) Then '' do some error handling End If sqladapt.SelectCommand.Parameters.AddWithValue("@startyear", startdate) sqladapt.SelectCommand.Parameters.AddWithValue("@endyear", enddate)
这篇关于过滤两个日期列之间的结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!