如何在 Excel 2007 中建立具有動態日期範圍的 SQL 查詢?

如何在 Excel 2007 中建立具有動態日期範圍的 SQL 查詢?

我正在嘗試建立一個可以列印給定時間段報告的報告電子表格。下面的查詢有效,但是當我嘗試使用參數?代替日期時,在選擇包含日期的儲存格後出現錯誤。如果我使用單引號,('?')我會得到從字串到日期/時間的轉換失敗,如果我不使用(?)單引號,我會在@p1.

最終,我將需要一個開始和結束日期或一個添加月份或轉移到開始日期/時間的公式,以將資料過濾到重要資訊。該查詢是在 Microsoft Query 中建構的。

SELECT FloatTable.DateAndTime,
       TagTable.TagName
FROM   master.dbo.FloatTable FloatTable,
       master.dbo.TagTable TagTable
WHERE  FloatTable.TagIndex = TagTable.TagIndex
       AND (( FloatTable.DateAndTime >= {ts '2012-06-01 00:00:00'} )) 

任何幫助將不勝感激。

答案1

您需要以公式而不是文字的形式輸入查詢,並從您選擇的儲存格建立日期,以便建立有效的 SQL 語句。

假設儲存格 A1 中有一個日期,請將下列公式放入儲存格 B1 中:

="SELECT FloatTable.DateAndTime, TagTable.TagName FROM master.dbo.FloatTable _ 
FloatTable, master.dbo.TagTable TagTable WHERE FloatTable.TagIndex = _
TagTable.TagIndex AND ((FloatTable.DateAndTime>={ts '" & YEAR(A1) & "-" _
& MONTH(A1) & "-" & DAY(A1) & " 00:00:00'}))"

請注意,每行末尾的下劃線表示繼續。您需要刪除它們和回車符才能使公式發揮作用。整個公式設定在下面的一行。 (在這個網站上很難閱讀,但 Excel 喜歡它!)

="SELECT FloatTable.DateAndTime, TagTable.TagName FROM master.dbo.FloatTable FloatTable, master.dbo.TagTable TagTable WHERE FloatTable.TagIndex = TagTable.TagIndex AND ((FloatTable.DateAndTime>={ts '" & YEAR(A1) & "-" & MONTH(A1) & "-" & DAY(A1) & " 00:00:00'}))"

相關內容