首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在VBA中实现日期间SQL查询

在VBA中实现日期间SQL查询
EN

Stack Overflow用户
提问于 2014-07-31 20:22:47
回答 1查看 28K关注 0票数 7

我在VBA中使用excel和access数据库进行sql查询时遇到了问题。在mi VBA代码中,我有两个包含以下内容的数据变量:

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

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

我有一个access数据库,里面有很多带有日期字段的数据。我正在尝试从数据库中提取日期在我的两个变量之间的数据,我正在编写以下代码:

代码语言:javascript
代码运行次数:0
运行
复制
sql = "SELECT Date FROM Table WHERE Date BETWEEN #" & DateMin & "# AND #" & DateMax & "#

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

但是,如果我更改句子并编写以下代码

代码语言:javascript
代码运行次数:0
运行
复制
sql = "SELECT Date FROM Table WHERE Date > #" & DateMin & "#

它起作用了!给出日期比DateMin更高的数据,但我没有DateMax来停止它。我认为问题出在我第一段代码的第二部分,因为如果我编写代码

代码语言:javascript
代码运行次数:0
运行
复制
sql = "SELECT Date FROM Table WHERE Date < #" & DateMax & "#

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

对不起,我的英语,我正在努力解释得更好,我知道。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-31 20:53:34

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

您的DateMin (31/07/2014 22:00:00)只能解释为dd/mm/yyyy hh:nn:ss (31是无效的月份,因此它必须是日期),因此这是Access将使用的格式。

但是,您的DateMax (01/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)提供月份。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25058768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档