我有一个查询,使用 GETDATE() 作为日期参考可以正常工作,它收集年龄范围内的数据。但是,我想使用浮动 DATE 参考点,以便根据提供的 (dd/mm/yyyy) 日期而不是当前日期时间计算年龄
如何在下面的 WHERE 子句之后更改查询中的 GETDATE() 以使用 aYear 中的可变日期来获取我的年龄范围?
注意:正在使用 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
更改dbo.AGE(p.dob, GETDATE())
为dbo.AGE(p.dob, '" & aYear & "')
请注意,当您连接字符串时,您不包括引号,因此您必须将单引号括在双引号周围,以便它们存在于字符串中。
需要考虑的是,您将日期作为字符串传递,因此如果您连接的日期不是 Postgres“不喜欢”的格式,您可能会看到问题。只是在测试输出时要记住一些事情。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句