在VBA中的日期之间的SQL查询

时间:2014-07-31 12:22:47

标签: sql excel vba date between

我在使用excel和访问数据库在VBA中进行SQL查询时出现问题。在mi VBA代码中,我有两个包含此内容的数据变量:

DateMin = 31/07/2014 22:00:00

DateMax = 01/08/2014 06:00:00

我有一个访问数据库,其中包含许多带有日期字段的数据。我试图从数据库中提取我的两个变量之间的日期数据,我编写了这个:

sql = "SELECT Date FROM Table WHERE Date BETWEEN #" & DateMin & "# AND #" & DateMax & "#

但不起作用。结果不正确,日期不在我的两个日期之间。

但是,如果我更改句子和代码

sql = "SELECT Date FROM Table WHERE Date > #" & DateMin & "#

有效!提供比DateMin更高日期的数据,但我没有DateMax来阻止它。我认为问题出在我的第一个代码的第二部分,因为如果我编码

sql = "SELECT Date FROM Table WHERE Date < #" & DateMax & "#

我没有数据!为什么我没有给出比DateMax更低的数据?因此,我认为BETWEEN的句子不起作用。

对不起我的英语,我试着更好地解释,我知道。感谢。

1 个答案:

答案 0 :(得分:5)

您应始终使用明确的日期格式。当您的日期格式为00/00/0000时,Access必须猜测是dd/mm/yyyy(英国)还是mm/dd/yyyy(美国)。

您的DateMin31/07/2014 22:00:00)只能被解释为dd/mm/yyyy hh:nn:ss,(31是无效月份,因此必须是一天)所以这是Access将使用的格式

但是,您的DateMax01/08/2014 06:00:00)正在以美国格式进行解释 - 8th January 2014而不是1st August 2014

解决此问题的最简单方法是以ISO格式(yyyymmdd)提供日期,或将月份作为简短字词提供(dd mmm yyyy hh:mm:ss - 例如01 Aug 2014 06:00:00