Java 数据类型为“时间戳(6)和本地时区”的oracle 11g在windows和linux中以csv格式归档了不同的数据
我在Oracle11g中有一列,它的数据类型是带有本地时区的时间戳(6),其中的数据是 01-JAN-03 02.00.00.000000000上午 2016年4月7日下午12.32.32.996000000 2016年5月2日12.06.42.219000000下午 02-5-16 03.03.20.796000000下午 当我使用此代码在Windows中存档此数据时-Java 数据类型为“时间戳(6)和本地时区”的oracle 11g在windows和linux中以csv格式归档了不同的数据,java,linux,windows,oracle,timestamp,Java,Linux,Windows,Oracle,Timestamp,我在Oracle11g中有一列,它的数据类型是带有本地时区的时间戳(6),其中的数据是 01-JAN-03 02.00.00.000000000上午 2016年4月7日下午12.32.32.996000000 2016年5月2日12.06.42.219000000下午 02-5-16 03.03.20.796000000下午 当我使用此代码在Windows中存档此数据时- TIMESTAMPLTZ columnValue = (TIMESTAMPLTZ) row.getValues()[
TIMESTAMPLTZ columnValue = (TIMESTAMPLTZ) row.getValues()[pos];
String timestamp = columnValue.toString(connection, columnValue.getBytes());
public static String toString(Connection var0, byte[] var1) throws SQLException {
return toString(var0, var1, (Calendar)null);
}
public static String toString(Connection var0, byte[] var1, Calendar var2) throws SQLException {
Calendar var3 = toCalendar(var0, (Calendar)null, var1, var2);
int var4 = var3.get(1);
int var5 = var3.get(2) + 1;
int var6 = var3.get(5);
int var7 = var3.get(11);
int var8 = var3.get(12);
int var9 = var3.get(13);
int var10 = -1;
if(var1.length == SIZE_TIMESTAMPLTZ) {
var10 = TIMESTAMP.getNanos(var1, 7);
}
return TIMESTAMPTZ.toString(var4, var5, var6, var7, var8, var9, var10, var3.getTimeZone().getID());
}
这里toString()函数是TIMESTAMPLTZ类的函数。我正在使用metamodal来归档数据。WINDOWS
中csv文件中的存档数据如下所示-
2003-01-01 02:00:00亚洲/加尔各答
2016-04-07 12:32:32.996亚洲/加尔各答
2016-05-02 12:06:42.219亚洲/加尔各答
2016-05-02 15:03:20.796亚洲/加尔各答
使用相同的代码,我在LINUX
中归档相同的数据。csv文件显示如下数据:-
2002-12-31 20:30:00GMT
2016-04-07 07:02:32.996格林威治标准时间
2016-05-02 06:36:42.219格林威治标准时间
2016-05-02 09:33:20.796格林威治标准时间
在Linux中我可以做什么来获得与windows中相同的csv数据?
提前谢谢
编辑
当我执行columnValue.toString()时
语句my colvalue.getBytes()是120116,4,7,8,3,33,59,93,-63,0
在linux和windows中,我在windows中得到2016-04-07 12:32:32.996 Asia/Calcutta
结果,在linux中得到相同的值2016-04-07 07 07:02:32.996 GMT
结果。
在linux中如何才能获得与windows相同的结果。数据类型带有本地时区的时间戳(6)
表示时间总是显示在您的本地时区中。因此,您不能修改它的输出时区
为了在“亚洲/加尔各答”中得到它,你可以
SESSIONTIMEZONE
,即
ALTER SESSION SET TIME_ZONE='亚洲/加尔各答'代码>
Asia/Calcutta
时区环境,即export ORA_SDTZ=Asia/Calcutta
TO_CHAR(‘亚洲/加尔各答’,‘yyyy-mm-dd hh24:mi:ss-tzr’,‘本地时区的时间戳为SYSTIMESTAMP,本地时区的时间戳为SYSTIMESTAMP,本地时区的时间戳为时间戳)
答错