过滤两个日期列之间的结果 [英] Filter results between 2 date columns

查看:94
本文介绍了过滤两个日期列之间的结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道如何过滤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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆