OpenRowset按日期过滤查询结果

时间:2018-11-08 17:13:12

标签: sql sql-server ssms

我正在尝试按日期过滤一些查询。我正在使用OPENROWSET从DBF表中提取数据,但是我无法按日期进行过滤,Visual Studio说数据类型为数据库日期[DT_DBDATE]。我正在使用此查询:

$accessToken['access_token']

但是sql server说“语法错误整齐'20120301' 知道如何在OPENROWSET内部进行过滤吗?

2 个答案:

答案 0 :(得分:0)

您将需要在过滤器中使用双引号,并在日期部分之间使用-的日期格式。

SELECT * FROM
OPENROWSET(
'VFPOLEDB', 
'C:\FOLDER\VFPDB\TABLES' 
;'';'', 
'SELECT *
FROM pedidoc
WHERE date BETWEEN ''2012-03-01'' and ''2012-03-30'' '
) AS pedidoc

答案 1 :(得分:0)

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

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函数将它们转换为字符串(从日期转换为字符串):

'SELECT DTOS(date) as datestr FROM pedidoc WHERE BETWEEN(date, {^2012-03-01}, {^2012-03-30})'
相关问题