2

我使用 vb.net 和 ms access 2003 作为后端。当我使用下面显示的 sql 查询时,我的结果中没有任何记录。我正在尝试查找日期低于(或早于)当前日期的记录。

Dim Sql, CurrentDate as String

Dim TrDate as Date

Dim DataVal As Integer

TrDate=DateTime.Now

CurrentDate=Format(TrDate, "dd/MM/yyyy hh:mm:ss tt")

Sql="Select count(*) from Table1 where InvDate<=#" & CurrentDate & "#"

IF DBConOpen()=True

        cmdOledb.CommandText = sql
         cmdOledb.CommandType = CommandType.Text
         cmdOledb.Connection = ConOledb
         DataVal = cmdOledb.ExecuteScalar
         msgbox(DataVal)

End IF

例如,如果我的当前日期是 01/09/2012 或 02/09/2012 或 .. 12/09/2012 并且数据库中的日期是 01/09/2012 或 02/09/2012 或 .. 12/09/ 2012 年。我应该得到相应的记录数。但在这种情况下,我得到 0 条记录。

但是如果我当前的日期是 01/09/2012 或 02/09/2012 或 .. 12/09/2012 并且数据库中的日期是 20/08/2012 或 15/06/2012 或 .. 30/05/2012 . 我得到了正确的记录数。

我在 MS 访问表中定义的日期格式是“通用日期”。有没有人能够发现什么是错的?

4

2 回答 2

1

除非您需要在提交查询之前在 Dot.Net 中确定您的日期/时间值,否则您可以使用 Access db 引擎的Now()功能。

Sql="Select count(*) from Table1 where InvDate<=Now()"

这种方法避免了有关格式和分隔符的问题。

如果您只想要没有当前时间的日期,请使用Date()而不是Now(). (实际上,Date()将返回午夜作为时间分量。)

于 2012-09-05T05:40:55.710 回答
1

你应该使用:

CurrentDate=Format(TrDate, "yyyy/MM/dd hh:mm:ss tt")

访问需要一个明确的日期。

您可能还想删除时间元素。

于 2012-09-04T20:23:50.563 回答