1

尝试使用昨天日期的 where 参数运行 openquery 但出现错误.. 任何人都可以帮忙

select top 10 * into #temp1 
from openquery(mysql1, 'select * from test.T1 where source = "Data" and 
  calcdate = SELECT REPLACE(CONVERT(VARCHAR, DATEADD(dd, -1, GETDATE()), 102), '.', '-') ')

谢谢

这是错误消息 102,级别 15,状态 1,行 2 '.' 附近的语法错误。

4

3 回答 3

2

您缺少转义引号,并且SELECTinWHERE clause是多余的。

尝试这个:

select top 10 * into #temp1 
from openquery(mysql1, 'select * from test.T1 where source = ''Data'' and 
  calcdate = DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -1 DAY), ''%Y-%m-%d'')')
于 2013-02-26T13:50:51.010 回答
0

SELECT 语句必须在括号中或不使用 SELECT 关键字

select top 10 * into #temp1 
from openquery(mysql1, 'select * from test.T1 where source = "Data" and 
  calcdate = (SELECT REPLACE(CONVERT(VARCHAR, DATEADD(dd, -1, GETDATE()), 102), '.', '-')) ')
于 2013-02-26T13:48:30.023 回答
0

您不需要另一个选择查询来使用转换函数。你也to get the correct results应该comparing dates not varchar valueswhere clause. 如果calcdate不是日期类型字段,则在比较之前对其进行转换。尝试这个;

Select top 10 * into #temp1 
From openquery(mysql1, 'Select * from test.T1 where source = ''Data'' and 
  calcdate =  dateadd(dd, -1, getdate())')

选择查询字符串的演示

于 2013-02-26T14:15:49.317 回答