如果日期比數據庫中的記錄日期更早,那麼我想使它們成爲被動的,以便使用更新命令。如何通過在C#中使用單個查詢來執行此操作?如何通過在C#中使用單個查詢來做到這一點?
Colums:Tarih(nvarchar的),硬粒(NVARCHAR)
例如;
if tarih<Datetime.Today.Date is set Durum='PASİF'
代碼:
string sorgu = "select BitTarihi from Abonelikler";
SqlConnection gg = new SqlConnection(constr);
SqlCommand gg2 = new SqlCommand(sorgu,gg);
SqlDataReader gg3;
gg.Open();
gg3= gg2.ExecuteReader();
while (gg3.Read())
{
DateTime b1 = new DateTime();
DateTime b2 = new DateTime();
b1 = Convert.ToDateTime(gg3.GetString(0));
b2 = DateTime.Today.Date;
TimeSpan fark = new TimeSpan();
fark = b2 - b1;
if (fark.TotalDays > 0)
{
SqlConnection vv = new SqlConnection(constr);
SqlCommand vv2 = new SqlCommand("update Abonelikler set Durum='PASİF' where BitTarihi='" + b1.ToShortDateString() + "'", vv);
vv.Open();
vv2.ExecuteNonQuery();
vv.Close();
vv2.Dispose();
}
}
gg.Close();
gg2.Dispose();
不DateDiff返回日期邊界差異而不是全天差異? – Tao
@Tao,是,它「返回在指定的startdate和enddate之間交叉的指定日期部分邊界的計數(有符號整數)」。我猜測由於TimeSpan.TotalDays屬性的分數性質,'BitTarihi'不包含時間部分(或者if(fark.TotalDays> 0)'不會正常工作) - 在這種情況下,DATEDIFF返回正是我們想要的,不是嗎? – Dmitry
是的,但你上面的原始僞碼也做了日期邊界檢查,所以這就是你要求的。 – samjudson