Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取两个日期之间的日期时出现问题(vb.net | OLE)_Vb.net_Ms Access_Oledb - Fatal编程技术网

获取两个日期之间的日期时出现问题(vb.net | OLE)

获取两个日期之间的日期时出现问题(vb.net | OLE),vb.net,ms-access,oledb,Vb.net,Ms Access,Oledb,我有一个数据库.mdb,它有一个日期为dd/mm/yy的列,有人给我一个代码来获取数据库中2个日期之间的所有日期,代码是: Select * from table where date between 'StartDate' and 'EndDate' 但是在我使用代码之后,发生了一个错误,告诉我数据的类型不同 System.Data.OleDb.OleDbException was unhandled ErrorCode=-2147217913 Message="عدم تطاب

我有一个数据库.mdb,它有一个日期为dd/mm/yy的列,有人给我一个代码来获取数据库中2个日期之间的所有日期,代码是:

Select * from table where date between 'StartDate' and 'EndDate'
但是在我使用代码之后,发生了一个错误,告诉我数据的类型不同

System.Data.OleDb.OleDbException was
 unhandled   ErrorCode=-2147217913  
 Message="عدم تطابق نوع البيانات في
 تعبير المعايير."   Source="Microsoft
 JET Database Engine"
虽然我将数据库中日期列中的数据类型转换为日期\时间,并使用OLE对象连接到数据库


出了什么问题,我必须做什么?

在使用Access时,通常需要在日期/时间类型周围加上

#22/01/2009#

与其使用动态SQL,不如使用Access数据库引擎的CREATE PROCEDURE SQL DDL语法来创建一个持久化对象,该对象的参数的强类型为DATETIME,默认值为NULL。处理空值以使用DATETIME列的值,例如

CREATE PROCEDURE GetStuff
(
 arg_start_date DATETIME = NULL, 
 arg_end_date DATETIME = NULL 
)
AS
SELECT lastvstart
  FROM tb 
 WHERE lastvstart 
          BETWEEN IIF(arg_start_date IS NULL, lastvstart, arg_start_date)
          AND IIF(arg_end_date IS NULL, lastvstart, arg_end_date);

我编写了如下代码:SQLstr=Select*from tb,其中lastvstart介于0/0/0和30/12/2009之间,但现在它给了我一个错误,它无法生成语句,我是不是写错了?据我所知,您是以正确的方式编写的,但我怀疑0/0/0是否被识别为有效日期。您是否在2009年1月12日至2009年12月30日期间尝试过诸如Select*from tb where lastvstart之类的软件?它不需要返回任何数据,我们只想知道查询是否有效,是否不会导致错误Thanx I finally success:SQLstr=Select*from tb,其中lastvstart在1800年1月1日至&b&I之间与Access的新功能有点脱节-它们是何时引入存储过程的?大约1999年:Jet 4.0,访问2000。注意Access数据库引擎仍然不支持过程代码,因此过程可能只包含一条SQL语句,因此它的某些对象被称为“存储”过程。然而,在这种情况下,它确实产生了:1存储在数据库中,即由使用数据库的所有应用程序共享;2强类型参数;3个默认值,即调用者可以忽略。这不是存储过程。这只是一个参数查询,至少从Jet2.x(与Access 2、c一起发布)开始,它就存在于Access中。顺便说一句,上面的DDL语句生成了这个SQL,它将与我使用过的每个Jet/ACE版本完全兼容:参数arg_start_date DateTime,arg_end_date DateTime;从tb中选择tb.lastvstart,其中tb.lastvstart介于IIf[arg_start_date]为Null、[lastvstart]、[arg_start_date]和IIf[arg_end_date]为Null、[lastvstart]、[arg_end_date]之间;更重要的是,JET4的引入所增加的不是创建参数查询的能力,而是通过与其他数据库引擎兼容的DDL来创建参数查询的能力。