在将Java
Date写入SQL
TIMESTAMP列之前,JDBC是否将日期从Java虚拟机时区转换为数据库会话的日期?
例如,假设Java虚拟机时区为UTC,数据库会话时区为UTC-5。如果Java程序根据JDBC标准尝试2000-01-01 00:00:00
通过将其传递给来进行存储PreparedStatement#setTimestamp(int, Timestamp)
,则数据库将存储TIMESTAMP '2000-01-01 00:00:00'
还是TIMESTAMP '1999-12-31 19:00:00'
?
不,JDBC只是有关客户端如何访问数据库的API。对于时间戳存储,这将必须由编写符合JDBC
API标准的数据库驱动程序的组织来决定。
这是MySQL的的实现PreparedStatement
。他们似乎将Java的JVM时区带到了MySQL时区(请检查setTimestampInternal()
方法)。
问题内容: 我正在尝试使用Java日期和日历来实现从一个时区到另一个时区的简单转换。我正在尝试运行以下代码 但这仍然返回相同的日期,而不是+1小时…整个问题似乎微不足道,但我找不到任何简单的答案。在此先感谢您的帮助。 问题答案: 当您使用来打印日期时, 返回的是,并且始终以本地时区打印日期。 相反,您可能要使用:
问题内容: 我四处搜寻,令人惊讶地找不到Oracle JDBC的答案。这个密切相关的问题为PostgreSQL和MySQL提供了答案。 基本上,如果我在两个不同的时区中有两个应用服务器,将时间戳写入一个Oracle数据库,将会发生什么?谢谢。 编辑:我应该补充一点,当我执行查询时,似乎JDBC发送给数据库的值在我的本地时区。 问题答案: 我整理了一些测试JDBC代码以弄清楚到底发生了什么。结果很有
我有一个场景,我需要转换一个日期时间字符串从时区A(UTC)到时区B(EST)。 这里是发生这种转换的JVM,它是时区C(HKT)日期对象。 因此,代码块如下所示: 我期望的输出是最后一条语句中的“Fri Nov 14 16:30:00 EST 2014”,即,可用的最终日期对象应该在EST中。 如果有人有这方面的信息,请告诉我。 更新: 为了明确我的请求,输出应该仅在日期对象中。 我打印的示例代
位于新加坡(时区-“亚洲/新加坡”)的我的系统从印度尼西亚(时区-“亚洲/新加坡”)的外部系统接收字符串datetime(yyyy-MM-dd HH:MM:ss)。 如何在java 1.7中将收到的String日期时间转换为UTC? 这是我的代码:
问题内容: 我从我的API获取此日期字符串: 但是此日期为UTC格式,我想将其转换为当地时间,该怎么办? 我尝试了这个: 但是它返回了这个错误: 问题答案: 您的日期格式模式错误。改成: 有关更多信息,请参见SimpleDateFormat的javadoc。
我有一个带时区的日期(如2014年3月21日08:00:00)(“如美国/丹佛”),我想将该日期转换为格林尼治标准时间;我怎么能这样做? 我还想知道Oracle是否接受DST?它会自动处理吗?是否以相同的方式支持所有时区? 注:“来自时区”在每种情况下都会改变;所以,并不总是美国/丹佛