使用“日期”属性时出现问题。
我在这里的课:
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;
}
我不能使用Date()属性,它仅接受Date。但是,当我调试它时,像这样显示并跳转以捕获错误。
它无法比较,
r["TransDT"]
是DateTime
。这是图像显示错误。更新:r [“ TransDT”]是数据库中的对象{string},其值是:
11/11/2015 18:03:11
我正在使用查询这样的格式:
FORMAT(TransDT,'dd/MM/yyyy HH:mm:ss') as TransDT from Transact
调试时出错:
Animate screenshot gif
最佳答案
该值可以是null
(DBNull.Value
),您可以尝试使用DateTime?
-operator将其强制转换为as
。当强制转换失败时,您会得到一个Nullable<DateTime>
和HasValue=false
:
DateTime? TransDT = r["TransDT"] as DateTime?;
if(TransDT.HasValue && TransDT.Value.Date == DateTime.Today)
{
// ...
}
您不需要
while
,因为您只有一个if
,所以DataRow
就足够了。