gpt4 book ai didi

java - 替换 SQL 字符串中的时间戳占位符

转载 作者:行者123 更新时间:2023-12-01 22:39:36 25 4
gpt4 key购买 nike

这是场景:

我有一个示例 SQL 查询,例如:

SELECT ID, NAME FROM MYTABLE WHERE DATE = &Date

我想根据某些条件在运行时替换此&Date。所以我有一个实用程序类,它提供实际的时间戳。

Timestamp timeStamp = Util.getTimeStamp("16102014 03:40:06")

问题出在我尝试更换它时。如果我将其替换为 timeStamp.toString() [这不是正确的方法,只是为了测试我所做的],它会被替换,但我的查询变得无效,并且我收到 SQL 异常(ORA-01861:文字与格式字符串不匹配)。

我想要实现的是我想用时间戳值替换占位符并执行查询。

约束

  1. 我无法使用 PreparedStatement 设置值,因为查询可以是任何任意查询,并且我没有有关该子句的事先信息。

感谢任何帮助。

最佳答案

由于我们处于“String”领域,因此这是一个“String”解决方案:

Timestamp timeStamp = Util.getTimeStamp("16102014 03:40:06")
SimpleDateFormat format = new SimpleDateFormat("''yyyy-MM-dd HH:mm:ss''");
String formattedDate = format.format(timeStamp);
sql = sql.replace("&Date", formattedDate);

注意:日期格式中的双 '' 表示在输出中生成一个引号(单引号是日期格式中文字文本的分隔符) .

另请注意,由于您没有使用驱动程序,因此用于引用文本的字符取决于数据库。此解决方案假设单引号可用于引用文字,但如果您的数据库需要双引号 ",则格式应为 "\"yyyy-MM-dd HH:mm :ss\"",

关于java - 替换 SQL 字符串中的时间戳占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26396010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com