Member 11856456 Ответов: 1

Фильтрация результатов между 2 столбцами дат


Я знаю, как фильтровать даты внутри 1 столбца, но как вы фильтруете между 2 столбцами?

Пример
"Select * from Employeetable hiredate between @startyear and @endyear, sqlcon"
sqladapt.SelectCommand.Parameters.AddWithValue("@startyear", start.Text)
       sqladapt.SelectCommand.Parameters.AddWithValue("@endyear", end.Text)


есть довольно много примеров для одного столбца, но я не могу найти много о том, как использовать 2 столбца дат.

может ли кто-нибудь помочь мне с этим

Что я уже пробовал:

Я уже пробовал
"SELECT * FROM [Employeetable] where [Hiredate] > @startyear and [Lastday] < @endyear, sqlcon"
sqladapt.SelectCommand.Parameters.AddWithValue("@startyear", start.Text)
        sqladapt.SelectCommand.Parameters.AddWithValue("@endyear", end.Text)



оба нужные

1 Ответов

Рейтинг:
4

Wendelius

Я так понимаю, что даты хранятся как даты в базе данных? Если это верно, то параметром также должна быть дата.

Попробуйте сначала преобразовать текст в datetime, а затем использовать значение в качестве параметра. Иначе говоря

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

Кроме того, вы можете установить тип данных параметра при добавлении параметра. Видеть OleDbParameterCollection.Добавьте Метод (String, OleDbType) (System.Data.Для oledb)[^]

ДОПОЛНЕНИЕ:
---------
Версия VB

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)


Member 11856456

Я попробую это сделать, когда войду, мне просто нужно будет перейти с C# на vb.net. Уилл vb.net есть ли "выход" как часть их выбора? У вас есть if (!DateTime.TryParse(start.Text, out startddate)), который имеет out в нем.

Wendelius

Извините, не заметил бирку VB. Теперь в решение добавлена версия VB.