Chính xác giống như bất kỳ thông số nào khác ... tất nhiên tùy thuộc vào cách bạn đang truy cập dữ liệu, nhưng nếu chúng tôi giả định một tham số được đặt tên là @fromDate
/@toDate
) trong TSQL, và thêm tên SqlParameter
s (với .Value = theDate
) để lệnh:
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();
}
với LINQ vv bạn chỉ muốn sử dụng nó trong các truy vấn, ví dụ:
int count = db.Users.Count(user => user.LastSeen>=start && user.LastSeen<end);
tôi đang sử dụng một đơn giản co trong các ví dụ chỉ để giữ cho nó đơn giản; rõ ràng là bạn có thể SELECT blah
từ một VIEW
vv quá ...
Nguồn
2010-10-19 07:23:38
Vâng, Đó là ratherly một tình huống bối rối: Tôi muốn thực hiện một báo cáo trong một cách mà nếu người dùng của tôi đã nhập ngày cho FromCreateDate thì tôi so sánh nó với cột createDate, nếu không, thì tôi so sánh cột được tạo chỉ với giá trị ToCreateDate (tức là <= ToCreateDate) – odiseh
thì bạn cần một cái gì đó như: 'WHERE createDate> = @ fromDate AND (@toDate IS NULL HOẶC createDate <= @toDate) '. –