繁体   English   中英

在Excel中按日期查询SQL引用(单元格)

[英]SQL query by date with reference in excel (cell)

我通过VBA进行Mysql查询,并在使用cell中的日期时出错。 我需要使用单元格值进行循环。 我认为这归因于Excel和Mysql之间的日期格式兼容性。 感谢您的帮助。 谢谢!

For R = 6 to lastrow

SQLQuery2 = "SELECT * FROM Mfg.databasemodels_note where typeId = " & Sheets("Sheet1").Range("B" & R) & " AND date < " & Sheets("Sheet1").Range("I" & R) & " order by date asc limit 1;"

简短的答案是您的sql字符串包含MySQL无法识别的日期。 在构建字符串之后立即放置一个断点,运行代码,然后查看字符串的内容; MySQL应该如何理解呢?

根据MySQL参考资料(下面的链接),这是您更新的代码行:

SQLQuery2 = "SELECT * FROM Mfg.databasemodels_note where typeId = " & Sheets("Sheet1").Range("B" & R).Value & " AND date < " & Format(Sheets("Sheet1").Range("I" & R).Value, "'YYYY-MM-DD Hh:NN:SS'") & " order by date asc limit 1;"

真正的答案是,由于SQL注入的风险 ,您永远都不会从头开始构建包含用户输入的SQL字符串。 阅读“ 如何使用VBA / C ++ / Java调用参数化ADO查询 ”以快速了解应做的事情(在运行自己的基本验证之前)。

参考资料: MySQL 5.7:DATE,DATETIME和TIMESTAMP类型 / Visual Basic for Applications:格式函数

进一步阅读: VBA,ADO.Connection和查询参数 / ADODB命令失败使用参数化SQL查询执行

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM