我有一个使用GETDATE()作为日期引用的查询,它可以收集年龄范围内的数据。 但是,我想使用浮动DATE参考点,以便从提供的(年/月/日)日期而不是当前日期时间计算年龄
如何在下面的WHERE子句之后更改查询中的GETDATE(),以便在aYar中使用变量日期来获取我的年龄范围?
注意:使用SQL查询将数据从PostGres数据集提取到Excel 2010中
Dim sAge As Integer
sAge = ThisWorkbook.Sheets("INPUT").Range("B5") 'AGE FROM
Dim eAge As Integer
eAge = ThisWorkbook.Sheets("INPUT").Range("C5") 'AGE TO
Dim aDate As String
aDate = ThisWorkbook.Sheets("INPUT").Range("D5") 'CALC AGE USING THIS DATE
aYear = Format(aDate, "dd/mm/yyyy")
Dim abc As String
abc = "SELECT c.id, p.dob, [AGE NOW] = dbo.AGE(p.dob, GETDATE()) " _
& "FROM table c INNER JOIN person p ON c.id=p.id " _
& "WHERE ( dbo.AGE(p.dob, GETDATE()) >= " & [sAge] & " AND dbo.AGE(p.dob, GETDATE()) <= " & [eAge] & " ) " _
Set rs = conn.Execute(abc)
With ActiveSheet.QueryTables.Add(Connection:=rs, Destination:=Range("A1"))
.Refresh
End With
rs.Close
答案 0 :(得分:0)
将dbo.AGE(p.dob, GETDATE())
更改为dbo.AGE(p.dob, '" & aYear & "')
请注意,当您连接字符串时,您不包含引号,因此您必须在双引号周围包装单引号,以便它们存在于字符串中。
需要考虑的是,您将日期作为字符串传递,因此如果您连接的日期不是Postgres&#34;不喜欢的格式&#34 ;你可以看到问题。在测试输出时要记住一些事项。