![如何在 Excel 2007 中建立具有動態日期範圍的 SQL 查詢?](https://rvso.com/image/1317557/%E5%A6%82%E4%BD%95%E5%9C%A8%20Excel%202007%20%E4%B8%AD%E5%BB%BA%E7%AB%8B%E5%85%B7%E6%9C%89%E5%8B%95%E6%85%8B%E6%97%A5%E6%9C%9F%E7%AF%84%E5%9C%8D%E7%9A%84%20SQL%20%E6%9F%A5%E8%A9%A2%EF%BC%9F.png)
我正在嘗試建立一個可以列印給定時間段報告的報告電子表格。下面的查詢有效,但是當我嘗試使用參數?
代替日期時,在選擇包含日期的儲存格後出現錯誤。如果我使用單引號,('?')
我會得到從字串到日期/時間的轉換失敗,如果我不使用(?)
單引號,我會在@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'}))"