У меня есть таблица, которая имеет столбец datetime. Я хочу вернуть все записи, дата которых больше даты ввода. Я использовал элемент управления выбора даты для даты ввода.
Другими словами, если моя таблица данных имеет только четыре строки,
2014-04-23 10:40:27.592 Abby
2014-05-23 09:40:27.592 Bobby
2014-06-01 08:53:59.320 Cathy
2014-06-05 08:53:59.320 Debbie
Когда мой элемент управления DatePicker имеет ввод 2014-06-03, выход должен быть:
2014-06-05 08:53:59.320 Debbie
Преобразуйте значение параметра dateTimePicker Control в строку перед вызовом метода select.
string FromDate = dateTimePickerFromDate.ToString()
В моем методе выбора у меня есть:
if (fromDate != null)
{
return GetSQLDataSet(" [employeeKnownAs] + ' ' +[employeeLastName] AS 'empName', [InsertDate]", "EmpData", "", "EmpData.InsertDate >= " + fromDate.ToString(), "InsertDate ASC", DbConnect.myDataConnection);
К сожалению, он возвращает null независимо от того, какие даты я выбираю из dateTimePicker.
Ваш DatePicker в любом случае возвращает часть DATE только так, как вы упомянули в своем сообщении, my DatePicker control has input of 2014-06-03
. Таким образом, вам нужно CAST
ваше значение DATETIME SQL для DATE в вашем SQL-запросе. Ваш запрос должен выглядеть примерно так:
select
[employeeKnownAs],
[employeeLastName] AS 'empName',
[InsertDate]
from EmpData
where cast(InsertDate as DATE) >= fromDate.ToString()
Вы также можете использовать функцию SQL SERVER CONVERT()
со стилем 101
стиля
CONVERT(VARCHAR,InsertDate,101) >= fromDate.ToString()
Итак, вам нужно преобразовать datetime в правильную строку?
string FromDate = dateTimePickerFromDate.ToString("yyyy-MM-dd")
,
Мой код ниже:return GetSQLDataSet("[employeeKnownAs] + ' ' + [employeeLastName] AS 'empName', [InsertDate]", "EmpData", "", "CAST(InsertDate AS DATE) = " + fromDate, "InsertDate ASC", DbConnect.MyDataConnection);
fromDate является строкой сама по себе, поэтому нет необходимости преобразовывать ее в строку