为数据表中的计算列定义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
为每个日期列填充隐藏列。
上述就是C#学习教程:为数据表中的计算列定义DateDiff分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/991120.html