如何过滤日期和时间

时间:2015-02-06 02:38:54

标签: mysql vb.net rowfilter

我正在尝试使用此代码

过滤日期时间列
Private Sub RowFilter(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtUser.TextChanged, dtpEnd.ValueChanged, dtpStart.ValueChanged
    Dim dv As New DataView(dtAudit)
    dv.RowFilter = String.Format("`{0}` Like '%{1}%'", dgAudit.Columns(2).Name, txtUser.Text)
    dgAudit.DataSource = dv
    Dim newDV As New DataView(dv.ToTable)
    newDV.RowFilter = String.Format("`{0}` >= #{1}# and `{0}` <= #{2}#", dgAudit.Columns(5).Name, Format(dtpStart.Value, "dd/MM/yyyy"), Format(dtpEnd.Value, "dd/MM/yyyy"))
    dgAudit.DataSource = newDV

End Sub

我有一个日期2/4/2015(feb-4-2015)当我输入dtpEnd作为2015年2月3日它仍然显示日期。当我在dtpStart上输入2/3/2015时它没有显示日期..就像添加1天或者其他东西一样。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

就像VB文字一样,日期必须是#M/dd/yyyy#格式。正确的方法是简单地将您的DataTable绑定到网格,然后将其过滤到一行,如下所示:

Dim table = DirectCast(dgAudit.DataSource, DataTable)
Dim textColumn = dgAudit.Columns(2).Name
Dim dateColumn = dgAudit.Columns(5).Name

table.DefaultView.RowFilter = String.Format("[{0}] = '%{1}%' AND [{2}] >= #{3:M/dd/yyyy}# AND [{2}] <= #{4:M/dd/yyyy}#",
                                            textColumn,
                                            txtUser.Text,
                                            dateColumn,
                                            dtpStart.Value,
                                            dtpEnd.Value)