次の DataView.Rowfilter フィルターでは、Request_Date は smalldatetime です。
dv.RowFilter = "Request_Date >= '01/01/2012' and Request_Date <= '12/31/2012'"
これに関する問題は、smalldatetime がMM/dd/yyyy hh:mm:ss
であるということですが、形式が の文字列と比較されます'MM/dd/yyyy'
。これは、フィルターが文字列を自動的に smalldatetime に変換することを意味するため、比較では 2012 年 1 月 1 日午前 12 時から 2012 年 12 月 31 日午前 12 時までの日付/時刻のみが表示されます。2012 年 12 月 31 日以降の日付を含む行は、このフィルターによって取得されません。終了日に 1 日を追加するか、たとえば 12:59:59 を日付の最後に連結して、その日の他の時間を取得できることはわかっていますが、よりエレガントなものを期待していました。同等のSQLの... CONVERT(smalldatetime, Request_Date, 101) <= '12/31/2012'
. DataView フィールドの別の日付形式を取得する方法はありますか、または比較の前に終了日をマッサージすることはできますか?
参考までに、現在の最良のオプションは次のとおりです。
dv.RowFilter = "Request_Date >= #" & dtpStartDate.DateText & "# and Request_Date <= #" & DateAdd(DateInterval.Day, 1, dtpEndDate.DateValue) & "#"
ご協力いただきありがとうございます!