回答

收藏

JDBC时间戳和日期GMT问题

技术问答 技术问答 243 人阅读 | 0 人回复 | 2023-09-14

我有一个JDBC Date列,如果我使用getDate只能在 2009年10月2日* 得到’ date
/ C5 j3 L4 r: l‘部分,但是如果我使用getTimestamp我就可以得到完整的’ date ‘ 2009年10月2日13:56:78:890+ p% X2 }2 J, `' j9 G% O: n
。这正是我想要的。
__ ***
( V5 s: K* K& e+ |7 Z, Q7 [但是,getTimestamp返回的“日期”会“忽略” GMT值(假设为日期); 2009年10月2日13:56:78:890 ,我最终得到了
4 b/ V$ |3 B7 N1 \2009年10月2日15:56:78:8904 v$ N# r& O6 J8 Z% P7 L
我的日期在数据库中另存为+ 2GMT日期,但应用程序服务器位于GMT上,即晚2小时
8 k' o+ J% B6 Y* F* B1 Y/ L2 v如何仍然可以按时获得我的日期, 2009年10月2日13:56:78:890  x' X- x6 W8 Y4 R
编辑
& T  W3 r( @6 O6 m4 D" K我在格林尼治标准时间+2的客户端获得日期+2
9 M! U8 e* C- h$ {( N) C$ M               
  D" F' V3 {) M: g解决方案:% d$ H6 S. f) ^+ C, ?+ F2 ~) x
                7 s) ]2 d. T& P) B5 X" Y4 N# z
0 p: Y/ Z. ~1 O2 D8 e( v; T

0 ]4 d/ N8 {3 m4 z# ~3 D3 A                这就是时间戳和MySQL中其他时间类型之间的区别。时间戳记在UTC中保存为Unix time_t,但其他类型实际上存储日期/时间而没有区域信息。! y: u+ m( w. R+ G
当您调用getTimestamp()时,如果类型为timestamp,则MySQL8 d0 t$ |+ J' s8 o) D
JDBC驱动程序会将时间从GMT转换为默认时区。对于其他类型,它不执行这种转换。
/ K: T# F6 K( m% H您可以更改列类型,也可以自己进行转换。我建议采用前一种方法。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则