2010-10-19 24 views
5

Görünümden seçmek için C# DateTime değerlerini (FromCreateDate ve ToCreateDate) SQL Server 2005'e nasıl geçirebilirim?C# DateTime parametresini SQL Server 2005'e geçiriliyor mu?

CreateDate sonuç kümesindeki sonuç FromDateDate ve ToCreateDate arasında olmalıdır.

+0

Pınarı'na parametre türünü ayarlayabilirsiniz, O ratherly bir şaşkın durum: Ben bir rapor yapmak istiyorum Eğer bir kullanıcı FromCreateDate için bir tarih girdiyse, o zaman ben createDate sütunuyla karşılaştırırsam, o zaman ben createdate sütununu sadece ToCreateDate değeriyle karşılaştırırım (yani <= ToCreateDate) – odiseh

+1

o zaman şöyle bir şeye ihtiyacınız var: 'WHERE createDate> = @ fromDate AND (@toDate IS NULL OR createDate <= @toDate) '. –

cevap

5

Aynen olarak başka herhangi bir parametre ... tabii ki size veri-giriş yapıyoruz bağlıdır, ama biz bir SqlCommand sadece adlandırılmış parametreye başvurmak istiyorum varsayarsak (@fromDate/@toDate) yani ben kullanıyorum

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

, sadece sorguda kullanmak istiyorum vb LINQ ile

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

: TSQL içinde ve komuta (.Value = theDate ile) SqlParameter s adında ekleyin basit co Sadece basit tutmak için örneklerde yok; Açıkçası bir VIEW vb çok gelen SELECT blah ...

+0

@Mark: İki değeri dize olarak göndermeli ve sonra bunları saklı yordamda datetime olarak mı dönüştürmeliyim? – odiseh

+0

Hayır; 'DateTime' değişkenlerinizi' YourParameter.Value' olarak ayarlayın. Bir örnek ekleyeceğim ... –

8

Sadece SqlDbType.DateTime

örn

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;