如何管理数据库和Web应用程序之间的时区(本地时间的现有数据库)

时间:2013-10-02 12:54:44

标签: java database datetime web-applications timezone

在将此问题发布到此处之前,我已经用Google搜索了这个问题。我没有找到特定于我的问题的解决方案,所以我走了。如果做得不对,请原谅我。

我正在使用Java,JSP,Tomcat和Oracle 9i / 10g。

我有现有的数据库,当地时间存储了数据。例如,如果表是“约会”,则所有计划日期,创建日期和更改日期 - 数据都存储到DB中,其中包含“Date dt = new java.util.Date();”和SQL语句“INSERT到约会(计划日期,创建日期,更改日期)值(?,?,?)”

Date dt = new java.util.Date();
...
String query ="INSERT into Appointment (Scheduled Date, Created Date, Changed Date) values (?,?,?)";
...
pstmt.setDate(1, users_browser_selected_date);
pstmt.setDate(2, dt);
pstmt.setDate(3, dt);
......

该守则仅供说明。请不要理会任何代码/逻辑错误......

此时已使用上述代码存储数据。意味着它存储当地时间。此时我不允许更改数据。 (我知道最好的做法是使用UTC格式存储数据。但是到目前为止它已经很晚才能进行更改。)

现在用户可以在任何时区使用Web应用程序,如果用户根据他/她浏览器的时间对数据进行搜索操作,那么数据需要准确一致。

有没有办法可以在不触及我的数据库的情况下完成此任务?可以在浏览器上对搜索表单上的日期进行哪些更改?在Java代码中执行搜索查询到DB时可以进行哪些更改?

如果你能提供一些步骤,那将会很有帮助。

非常感谢你。

1 个答案:

答案 0 :(得分:0)

以UTC格式在数据库中存储日期,根据区域设置转换为每个客户端的本地时区。