VB.NET 2012:从DataView中选择行以'Date'查询

时间:2012-12-18 08:35:08

标签: vb.net

我有一个表格,其中包含一个名为PurchaseDate

的日期列

我有一个显示月份的列表框。点击一个月后,我需要查询dataSource并收集SelectedMonth中购买日期的行。

dv2 = New DataView(ds.Tables(0), "PurchaseDate LIKE '" & SelectedMonth & "/%'", "BillNo", DataViewRowState.CurrentRows)

此代码无效。因为此处PurchaseDate的日期格式类似于'MM / DD / YYYY'。我想我需要在使用LIKE运算符之前将日期转换为字符串。我也尝试使用如下。即便如此,它也没有好转。

dv1 = New DataView(ds.Tables(0), "convert(varchar2(20),PurchaseDate,103) LIKE '" & SelectedMonth & "/%'", "BillNo", DataViewRowState.CurrentRows)

此处SelectedMonth将是一个字符串,如'01','10'..

2 个答案:

答案 0 :(得分:1)

使用Linq避免此类问题:

Dim selectedMonth = Int32.Parse(lbMonth.Text)
Dim filteredRows = From r In ds.Tables(0)
                   Where r.Field(Of Date)("PurchaseDate").Month = selectedMonth
' if you need a new DataTable
Dim tblFiltered = filteredRows.CopyToDataTable()

答案 1 :(得分:0)

你不能说你正在使用什么数据库,所以这些是我在同一场景中使用的与文化无关的日期文字......

的Oracle

TO_DATE('18-Dec-2012','dd-Mon-yyyy')

SQL /服务器

'18-Dec-2012'

Ms / Access(不依赖于文化,但它是MS / Access唯一接受的)

#12/18/2012#

因此,您可以将SQL格式化为类似这样的内容......

PurchaseDate BETWEEN  '1-Dec-2012' AND '31-Dec-2012'