通过仅指定constructor中的毫秒来构建SQL时间戳时,将使用哪个时区?以及如何选择是将UTC还是本地时区写入TIMESTAMP(6) WITH LOCAL TIME ZONE
类型的Oracle数据库列?
答案 0 :(得分:2)
时间戳(int year,int month,int date,int hour,int minute,int second,int nano)
时间戳(长时间) - 时间 - 自1970年1月1日00:00:00 GMT以来的毫秒数。负数是1970年1月1日00:00:00 GMT之前的毫秒数。
时间戳中没有时区
通常,如果假定时区,则为jvm default(系统默认值)
oracle数据类型是一种不同的野兽
见
Timezones in SQL DATE vs java.sql.Date
Oracle 10g Time Zone Confusion - 游戏中有3个时区
使用数据库时请使用Calendar或java.sql.Date
oracle驱动程序(和sql开发人员)可以将(其智能)日期从jvm时区(或严格来说,会话时区)转换为需要的日期
您可以使用 - alter session set time_zone ... How to get UTC value for SYSDATE on Oracle
更改会话时区小心你正在做的事情
编写10个不同的测试用例
这个博客也很好http://tonyhasler.wordpress.com/2010/09/04/tonys-tirade-against-timestamp-with-time-zone/