数据表选择日期时间

时间:2016-05-22 09:37:35

标签: vb.net datetime select

在第二个For Each中,我想选择EmailCreateDate = dtEmailCreateDate的所有记录,但没有找到记录。有人有想法吗?

Dim dtEmailCreateDate As DateTime = Date.Now    
For Each row In _tblMandantenData.Select("Selected = True AND EmailSentDate IS NULL")
    row("EmailCreateDate") = dtEmailCreateDate
    DBAccess.UpdateEmailVersandInfos(row)
Next

Dim strQuery = String.Format("Selected = True AND EmailCreateDate = '{0}'", dtEmailCreateDate.ToString())    
For Each rowToSent In _tblMandantenData.Select(strQuery)  
    SentMail(rowToSent)
Next

2 个答案:

答案 0 :(得分:2)

如果查看Expression property of the DataColumn(规则中列出了用于Select过滤器表达式的规则),您会注意到在DateTime列上创建了一个过滤器,其中包含数字符号(#)之间的日期

 DateTimeColumn = #value#

此外,日期应根据格式MM-dd-yyyy进行格式化,因此您的代码应使用此表达式检查日期

Dim strQuery = String.Format("Selected = True AND " & _ 
               "EmailCreateDate = #{0}#", dtEmailCreateDate.ToString("MM-dd-yyyy"))    

当然,如果名为EmailCreateDate的列还包含有关时间的信息,那么这仍然可能失败,因此您应该更改格式以包含时间“HH:mm:ss”的输出或更好地使用BETWEEN语法

答案 1 :(得分:0)

我的猜测 - 检查数据库中是否确实存在值。如果是,请检查传递的值是否与存储在DB中的值真正匹配。即使存在毫秒差异,您也无法获得数据。