簡體   English   中英

OpenQuery的開始和結束日期SQL

[英]OpenQuery start and end date SQL

我在運行查詢時獲取空白數據,並且如果我僅使用兩個''將手動日期放入條件中,則數據正確

DECLARE @strdate date,@endate date
set @strdate = '2017-06-24'
SEt @endate = '2017-06-26'
SELECT *
        FROM Openquery(E2E,'Select 
        Order_Created_at,
        Order_Number
        ,Shipping_Postcode
        ,Payment_Method
        ,Order_item
        ,Item_sku
        ,Item_Unit_Price 
        from sales_order_export_summary Where Date(Order_Created_at) >= '''' + @strdate + '''' AND Date(Order_Created_at) <= ''''+@endate + ''''')

您需要在連接之前將日期最好轉換為ISO格式的字符串

 Where Date(Order_Created_at) >= ''' + convert(varchar(10), @strdate, 112) + ''' AND

如果要在OPENQUERY中使用變量,則必須使用動態SQL。 我將變量@strdate@enddate更改為varchar(10) ,因為我無法連接字符串。

DECLARE @strdate varchar(10),@endate varchar(10)
SET @strdate = '2017-06-24'
SET @endate = '2017-06-26'
DECLARE @SQL varchar(MAX) = '
SELECT *
        FROM Openquery(E2E,''Select 
        Order_Created_at,
        Order_Number
        ,Shipping_Postcode
        ,Payment_Method
        ,Order_item
        ,Item_sku
        ,Item_Unit_Price 
        from sales_order_export_summary Where Date(Order_Created_at) >= ''''' + @strdate + ''''' AND Date(Order_Created_at) <= '''''+@endate + ''''''')'
EXEC (@SQL)       

OPENQUERY 文檔

其他答案解釋了格式問題。 這是另一種簡單的方法,但可能效率不高

DECLARE @strdate date,@endate date
set @strdate = '2017-06-24'
SEt @endate = '2017-06-26'
SELECT *
FROM   Openquery(E2E, 'Select 
        Order_Created_at,
        Order_Number
        ,Shipping_Postcode
        ,Payment_Method
        ,Order_item
        ,Item_sku
        ,Item_Unit_Price 
        from sales_order_export_summary')
WHERE  Order_Created_at >= @strdate
       AND Order_Created_at < Dateadd(dd, 1, @endate) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM