首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenRowset按日期过滤查询结果

OpenRowset按日期过滤查询结果
EN

Stack Overflow用户
提问于 2018-11-09 01:13:12
回答 2查看 244关注 0票数 0

我正在尝试按日期过滤一些查询。我正在使用OPENROWSET从DBF表中提取数据,但我不能按日期过滤,Visual Studio说数据类型是数据库日期DT_DBDATE。我使用这个查询:

代码语言:javascript
复制
SELECT * FROM
OPENROWSET(
'VFPOLEDB', 
'C:\FOLDER\VFPDB\TABLES' 
;'';'', 
'SELECT *
FROM pedidoc
WHERE date BETWEEN '20120301' and '20120330''
) AS pedidoc

但是sql server显示‘错误语法整齐'20120301’你知道如何在OPENROWSET中过滤吗?

EN

回答 2

Stack Overflow用户

发布于 2018-11-09 01:26:10

您需要在筛选器中使用双引号,并在日期部分之间使用带有-的日期格式。

代码语言:javascript
复制
SELECT * FROM
OPENROWSET(
'VFPOLEDB', 
'C:\FOLDER\VFPDB\TABLES' 
;'';'', 
'SELECT *
FROM pedidoc
WHERE date BETWEEN ''2012-03-01'' and ''2012-03-30'' '
) AS pedidoc
票数 0
EN

Stack Overflow用户

发布于 2019-06-28 22:40:21

在OPENROWSET中,SELECT语句的语法必须是OLEDB提供程序可接受的。在这种情况下,不使用SQL SERVER语法,而使用VISUAL FOXPRO语法:

代码语言:javascript
复制
SELECT * FROM
OPENROWSET(
'VFPOLEDB', 
'C:\FOLDER\VFPDB\TABLES' 
;'';'',
'SELECT * FROM pedidoc WHERE BETWEEN(date, {^2012-03-01}, {^2012-03-30})'
) AS pedidoc

从VFP->MSSQL进行日期/时间类型转换可能会出现问题,因此请使用DTOS函数将它们转换为字符串(日期到字符串):

代码语言:javascript
复制
'SELECT DTOS(date) as datestr FROM pedidoc WHERE BETWEEN(date, {^2012-03-01}, {^2012-03-30})'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53212881

复制
相关文章

相似问题

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