2017-11-11 406 views
0

我有通过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;" 
+0

顺便说一下,例如我的单元格的值2017年10月26日上午03点03分44秒由于 – Kaison

回答

0

简短的回答是您的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

+0

的@Excelosaurus ..转换日期到字符串解决问题。非常感谢!! – Kaison