在excel(单元格)中引用日期的SQL查询
我有通过VBA的Mysql查询,并且在使用单元格中的日期时出错。我需要使用单元格值来实现循环目的。我认为它是由于excel和Mysql之间的日期格式兼容性。感谢你的帮助。谢谢!在excel(单元格)中引用日期的SQL查询
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 injection risks。阅读How To Invoke a Parameterized ADO Query Using VBA/C++/Java以快速了解您应该做什么(在运行您自己的基本验证之上)。
基准物质:MySQL 5.7: The DATE, DATETIME, and TIMESTAMP Types/Visual Basic for Applications: Format Function
进一步阅读:VBA, ADO.Connection and query parameters/ADODB Command failing Execute with parameterised SQL query
的@Excelosaurus ..转换日期到字符串解决问题。非常感谢!! – Kaison
顺便说一下,例如我的单元格的值2017年10月26日上午03点03分44秒由于 – Kaison