如何在Excel 2007中使用动态日期范围创建SQL查询?


2

我正在尝试创建一个报告电子表格,可以打印给定时间段内的报告。下面的查询有效,但是当我尝试使用a时 ? 参数代替日期,选择包含我的日期的单元格后出错。如果我使用单引号 ('?') 如果不这样做,我会从字符串转换为日期/时间失败 (?) 我接近语法错误 @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'} )) 

任何援助将不胜感激。

Answers:


3

您需要将查询作为公式而不是文本输入,并从您选择的单元格中构建日期,以便创建有效的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'}))"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.