我有一个表格,其中包含一个名为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'..
答案 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'