1

我有一个表,其中包含一个名为的日期列PurchaseDate

我有一个显示月份的列表框。当我点击一个月时,我需要查询数据源并收集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'..

4

2 回答 2

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()
于 2012-12-18T08:51:08.977 回答
0

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

甲骨文

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'
于 2012-12-18T09:00:53.293 回答