2010-10-19 3 views
5

Как передать значения C# DateTime (FromCreateDate и ToCreateDate) на SQL Server 2005 для выбора из представления?Передача параметра C# DateTime на SQL Server 2005?

Результирующий набор CreateDate столбец должен находиться между FromDateDate и ToCreateDate.

+0

Ну, это ratherly озадаченно ситуация: Я хотел бы сделать доклад в способ, который, если мой пользователь ввел дату для FromCreateDate, тогда я сравниваю его с столбцом createDate, если нет, то я сравниваю столбцы createate только с значением ToCreateDate (т.е. <= ToCreateDate) – odiseh

+1

, тогда вам нужно что-то вроде: 'WHERE createDate> = @ fromDate AND (@toDate IS NULL ИЛИ createDate <= @toDate) '. –

ответ

5

Точно так же, как и любой другой параметр ... конечно, это зависит от того, как вы делаете ваши доступа к данным, но если мы предположим SqlCommand вы бы просто сослаться на именованный параметр (@fromDate/@toDate) в TSQL, и добавьте по имени SqlParameter с (с .Value = theDate) в команде:

DateTime end = DateTime.Today, start = end.AddDays(-7); // the last week 
using (var conn = new SqlConnection(connectionString)) 
using (var cmd = conn.CreateCommand()) 
{ 
    conn.Open(); 
    cmd.Parameters.AddWithValue("@from", start); // fine for DateTime; for strings, use more explicit param 
    cmd.Parameters.AddWithValue("@to", end); // construction to avoid lots of different-length plans 
    cmd.CommandText = "SELECT COUNT(1) FROM [Users] WHERE LastSeen >= @from AND LastSeen < @to"; 
    int count = (int) cmd.ExecuteScalar(); 
} 

с помощью LINQ и т.д. вы бы просто использовать его в запросе, то есть

int count = db.Users.Count(user => user.LastSeen>=start && user.LastSeen<end); 

Я использую простой co нет в примерах, просто чтобы это было просто; Очевидно, вы можете SELECT blah от VIEW и т.д. тоже ...

+0

@Mark: Должен ли я отправлять два значения в виде строки, а затем преобразовывать их в дату и время в хранимой процедуре? – odiseh

+0

Нет; просто установите переменные 'DateTime' в' yourParameter.Value'. Я добавлю пример ... –

8

Просто установите тип параметра в SqlDbType.DateTime

например

SqlCommand cmd = new SqlCommand("Select * From dbo.MyView Where createDate = @FromDate", SqlCon); 
cmd.Parameters.Add(new SqlParameter(@FromDate, SqlDbType.DateTime)); 
cmd.Parameters["@FromDate"].Value = fromDate; 
Смежные вопросы