postgresql – 如何在预准备语句中传递带有”(timestamp)的字符
我正在尝试执行以下查询
INSERT INTO hotspot(timestamp) VALUES (timestamp with time zone '2012-10-25 14:00:00 +05:00' at time zone 'EET'); 我想将时间戳作为变量传递. 我的时间戳列是带时区的时间戳类型. 你知道如何做到这一点吗? 当我做…(Java,Postgresql) String stm= "INSERT INTO hotspot(timestamp) VALUES(timestamp with time zone ? at time zone 'EET')"; pst = con.prepareStatement(stm); pst.setString(1,"2012-08-24 14:00:00 +05:00"); pst.executeUpdate(); 我在“$1”或附近收到语法错误 无论如何我能克服这个错误吗? 更新:我尝试通过以下方式使用setTimestamp … Calendar c=Calendar.getInstance(TimeZone.getTimeZone("GMT+05:00")); String stm= "INSERT INTO hotspot(timestamp) VALUES(?)"; pst = con.prepareStatement(stm); pst.setTimestamp(1,Timestamp.valueOf("2012-01-05 14:00:00"),c ); pst.executeUpdate(); 我想数据库中的正确值应该是(关于我的本地时区是EET(02)) 2012-01-05 11:00:00 02 但使用pgadmin我检查值,我得到 2012-01-05 14:00:00 02 有什么建议? 解决方法
考虑使用setTimestamp()方法而不是setString()方法.检查
this link以了解如何使用PreparedStatement.
编辑:正如我在评论中解释的那样,使用三个参数检查API reference for setTimestamp():
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |