mysql - 如何过滤日期和时间

标签 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(2015 年 2 月 4 日),当我输入 dtpEnd 为 2/3/2015 时,它仍然显示该日期。当我在 dtpStart 上输入 2/3/2015 时,它不显示日期.. 就像添加 1 天之类的。我该如何解决这个问题?

最佳答案

就像 VB 文字一样,日期必须采用 #M/dd/yyyy# 格式。执行此操作的正确方法是简单地将唯一的 DataTable 绑定(bind)到网格,然后将其过滤在一行中,如下所示:

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)

关于mysql - 如何过滤日期和时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28357680/

相关文章:

mysql - .mdf 相当于 mysql (TOAD)

vb.net - 如何在字符串的两个相同字符之间获取字符串 - 在 vb.net 中

vb.net - 在 VB.NET 中将日期时间转换为等效的十六进制

java - 如何根据 boolean 值列过滤 JTable 中的行?

java - JTable 根据不在表中的属性对行进行排序

php - 无法选择特定 ID 来编辑 PHP 中的数据

mysql - 无法使用 MySQL Workbench 连接到 Azure MySQL

mysql - Left Join with Find in 集合

c# - 在 .NET 中释放 COM 对象的 "ownership"

dataset - 从 vb.net 中的数据集中过滤记录