2010-10-19 14 views
5

Jak przekazać wartości C# DateTime do (FromCreateDate i ToCreateDate) do programu SQL Server 2005 w celu wybrania z widoku?Przekazywanie parametru C# DateTime do SQL Server 2005?

Zestaw wyników CreateDate kolumna musi być między FromDateDate i ToCreateDate.

+0

dobrze, to ratherly zaskoczony sytuacja: Chciałbym, aby raport w sposób, że jeśli mój użytkownik wprowadził datę FromCreateDate, to porównuję ją do kolumny createDate, jeśli nie, to porównuję kolumnę createate tylko z wartością ToCreateDate (tj. <= ToCreateDate) – odiseh

+1

, a następnie potrzebujesz czegoś takiego: 'WHERE createDate> = @ fromDate AND (@toDate IS NULL OR createDate <= @toDate) '. –

Odpowiedz

5

Dokładnie tak samo, jak każdy inny parametr ... oczywiście to zależy od tego, jak robisz swój dostępu do danych, ale jeśli założymy SqlCommand chcesz tylko odnieść do określonego parametru (@fromDate/@toDate) w TSQL i dodać nazwane SqlParameter s (z .Value = theDate) z poleceniem:

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(); 
} 

z LINQ etc chcesz po prostu używać go w zapytaniu, tj

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

używam prosta współpraca w przykładach, aby zachować prostotę; oczywiście można SELECT blah od A VIEW etc zbyt ...

+0

@ Mark: Czy muszę wysłać dwie wartości jako ciąg, a następnie przekształcić je w datetime w procedurze przechowywanej? – odiseh

+0

Nie; po prostu ustaw zmienne 'DateTime' na' twoParameter.Value'. Dodam przykład ... –

8

Wystarczy ustawić typ parametru do SqlDbType.DateTime

np

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; 
Powiązane problemy