为数据表中的计算列定义DateDiff

我有DateTimeExpired列,我想创建另一个名为“Expired”的列,根据到期日期显示“Yes”或“No” – 如果日期已经过,则显示“Yes”。
我写了这个:

DataColumn colExpirationDate = new DataColumn("DateTimeExpired", typeof(DateTime)); DataColumn colExpired = new DataColumn("Expired", typeof(string), "IIF(DateDiff(DateTimeExpired, date())>= 0,'No','Yes')"); 

但我得到一个exception“该表达式包含未定义的函数调用DateDiff()。”

(请注意,我总是希望得到这一行,无论它是否已经过期)

如何将列的文本设置为正确的forms?

正如MA Hanin在评论中指出的那样,看起来DateDiff不能用于DataColumn表达式 。 您可以尝试将计算列构建到基础表中(如果您使用的是MS Sql或类似的)

编辑:没有“今天”的function,但假设您添加的DataColumn只存在几个小时,您可以在今天的日期中构建一个常量,然后使用比较运算符而不是DateDiff

试试这个:

 DataColumn colExpirationDate = new DataColumn("DateTimeExpired", typeof(DateTime)); DataColumn colExpired = new DataColumn("Expired", typeof(string), String.Format("IIF(DateTimeExpired > #{0}#,'No','Yes')", DateTime.Now.ToString("dd/MMM/yyyy"))); 

请注意,这仅适用于DataColumn仅在内存中保留不到一天的情况。

您所要做的就是使用Date.ToOADate将两个日期列转换为双精度数然后减去。

我使用ToOADate为每个日期列填充隐藏列。