我在使用「Date」屬性時遇到了問題。 我在這裏的類:不能在while循環中比較兩個日期
public bool ChuyenDSChamCong()
{
try
{
DataTable dta = DSChamCong();
if (dta == null)
return false;
foreach (DataRow r in dta.Rows)
{
try
{
string sql = "delete FROM tk_dlchamcong where MD5(CONCAT(ma_chamcong,ma_nv, tg_check)) = md5('" + r["CardID"] + r["StaffID"] + r["TransDT"].ToString() + "')";
MYSQLDB.query(sql);
while (((DateTime)r["TransDT"]).Date == (DateTime.Today).Date)
{
string sql1 = "INSERT INTO tk_dlchamcong(ID,ma_chamcong, ma_nv, tg_check)values(md5('" + r["CardID"] + r["StaffID"] + r["TransDT"].ToString() + "'),'" + r["CardID"] + "', '" + r["StaffID"] + "', '" + r["TransDT"] + "')";
MYSQLDB.query(sql1);
}
}
catch {
}
}
return true;
}
catch { }
return false;
}
我不能使用日期()屬性,它只有日期接受。但是,當我調試它顯示這樣並跳到捕捉錯誤。它不能比較,r["TransDT"]
是DateTime
。這裏是圖片顯示錯誤。
更新:R 「TransDT」]是目的{字符串}在數據庫中有值:11/11/2015 18:03:11
我格式這與像查詢: FORMAT(TransDT,'dd/MM/yyyy HH:mm:ss') as TransDT from Transact
錯誤時調試:
很明顯,r [「TransDT」]不是DateTime類型,你能驗證它實際是什麼類型嗎? 'Debug.WriteLine(r [「TransDT」]。GetType()。FullName);'(假設它不能爲null) –
@ LasseV.Karlsen DateTime雖然可以爲空,但據我所知。因此,如果我沒有弄錯,那麼如果爲空,它應該是DBNULL? – Thomas
另外,你真的**鑼插行直到第二天?你的while循環不會推進'r',你會一遍又一遍地做同樣的事情,直到發生改變的一件事變得足夠了,那就是'DateTime.Today'。另外,'DateTime.Today'已經是日期,你也不需要'.Date'。 –