使用“日期”属性时出现问题。
我在这里的课:

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。这是图像显示错误。

c# - 无法在while循环中比较两个日期-LMLPHP

更新:r [“ TransDT”]是数据库中的对象{string},其值是:11/11/2015 18:03:11

我正在使用查询这样的格式:
FORMAT(TransDT,'dd/MM/yyyy HH:mm:ss') as TransDT from Transact

调试时出错:

Animate screenshot gif

最佳答案

该值可以是nullDBNull.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就足够了。

09-26 14:16