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

エスケープされた引用符が欠落しておりSELECT、inWHERE 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クエリは必要ありません。またto get the correct results、あなたはにいる必要がcomparing dates not varchar valuesありwhere 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 に答える
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 に答える