使用DataView.RowFilter过滤记录时转换列的数据类型

时间:2018-12-04 11:32:18

标签: asp.net c#-4.0 datatable

我有一个数据表,其中的列具有日期。日期存储为

  

2018/11/14 @ 12:10 PM。

     

2018/11/15 @ 13:49下午。

     

2018/11/16 @ 15:37下午   等等

现在我必须仅根据日期过滤记录。

我正在使用以下代码过滤记录,但未返回正确的数据。

dv.RowFilter = "SUBSTRING(DateColumn,1,10)>='2018/11/01' AND SUBSTRING(DateColumn,1,10)<='201811/30'";

我尝试像在Sql中一样强制转换子字符串值

(cast(DateColumn as date))

但是会引发错误。

任何人都可以帮助我如何从该列获取日期部分并将其数据类型更改为日期。

1 个答案:

答案 0 :(得分:1)

docs.microsoft.com中描述了可用于RowFilter的语法。

为了将给定列中的值转换为日期,您需要使用CONVERT function而不是cast

(cast(DateColumn as date))

将成为:

CONVERT(DateColumn, 'System.DateTime')

不幸的是,如果您的字符串格式很容易转换为DateTime(尽管这样做肯定不会伤害到它的机会),我会感到惊讶。给您带来一些成功:

CONVERT(SUBSTRING(DateColumn, 1, 10), 'System.DateTime')

然后您可以对其应用过滤器并说:

dv.RowFilter = "CONVERT(SUBSTRING(DateColumn, 1, 10), 'System.DateTime') >= '2018/11/01'";