mysql中datetime有带时区_当服务器时区不是UTC时,从Java中检索来自MySQL的UTC DATETIME字段...
我正在尝试使用Java和MySQL编写代码以与第三方开发的数据库进行互操作 . 此数据库具有一个字段,该字段将 DATETIME 字段中的时间戳存储为UTC日期 . 运行数据库和客户端的服务器的时区设置为非UTC区域( Europe/London ),因此默认情况下,时间戳的读取不正确,就像它是本地时间一样 . 我正在尝试编写代码以将其读回UTC .
我在这里已经阅读了几个类似的问题,但是他们都没有一个对我有用的答案:
不幸的是,我无法更改任何服务器设置,因此我尝试使用连接的"time_zone"变量将数据库服务器设置为使用UTC,并将可选的 Calendar 参数设置为 ResultSet.getTimestamp 以检索日期,但这对结果没有影响 . 这是我的代码:
private static final Calendar UTCCALENDAR = Calendar.getInstance (TimeZone.getTimeZone (ZoneOffset.UTC));
public Date getDate ()
{
try (Connection c = dataSource.getConnection ();
PreparedStatement s = c
.prepareStatement ("select datefield from dbmail_datefield where physmessage_id=?"))
{
fixTimeZone (c);
s.setLong (1, getPhysId ());
try (ResultSet rs = s.executeQuery ())
{
if (!rs.next ()) return null;
return new Date (rs.getTimestamp(1,UTCCALENDAR).getTime ()); // do not use SQL timestamp object, as it fucks up comparisons!
}
}
catch (SQLException e)
{
throw new MailAccessException ("Error accessing dbmail database", e);
}
}
private void fixTimeZone (Connection c)
{
try (Statement s = c.createStatement ())
{
s.executeUpdate ("set time_zone='+00:00'");
}
catch (SQLException e)
{
throw new MailAccessException ("Unable to set SQL connection time zone to UTC", e);
}
}
我正在尝试读取的数据库字段中存储了一个值,如下所示:
mysql> select * from dbmail_datefield where physmessage_id=494539;
+----------------+--------+---------------------+
| physmessage_id | id | datefield |
+----------------+--------+---------------------+
| 494539 | 494520 | 2015-04-16 10:30:30 |
+----------------+--------+---------------------+
但不幸的是,结果是BST而不是UTC:
java.lang.AssertionError: expected: but was:
mysql中datetime有带时区_当服务器时区不是UTC时,从Java中检索来自MySQL的UTC DATETIME字段...相关推荐
- Idea运行web项目时,提示java.lang.ClassNotFoundException: com.mysql.jdbc.Driver解决方法
Idea运行web项目时,提示java.lang.ClassNotFoundException: com.mysql.jdbc.Driver解决方法 参考文章: (1)Idea运行web项目时,提示j ...
- 前端里的button怎么去除点击自带边框_自媒体人做视频时配音中的噪音如何用EQ和采样去除(详细介绍)...
为了给今日头条奉献优质的声音和视频作品,大家几乎在所有的视频制作中都会用到解说声音或者现场的收录的声音,也都想获得较为理想的效果,那今天我就给大家详细解读如何才能获得更好的声音效果,并且重点会给大家讲 ...
- java 时区_世界时区和Java时区详解
0.引言 Druid中时区的问题一直困扰着我们,所以我专门去研究了一下世界时区和Java中的时区,对使用Druid很用帮助. 1.UTC时间&GMT时间 UTC时间是时间标准时间(Univer ...
- java的输出流包括_【转】输入/输出流 - 深入理解Java中的流 (Stream)
基于流的数据读写,太抽象了,什么叫基于流,什么是流?Hadoop是Java语言写的,所以想理解好Hadoop的Streaming Data Access,还得从Java流机制入手.流机制也是JAVA及 ...
- python3 将列表中元素转化为字典_软件测试学Python(七):Python中的变量和标准数据类型...
上一篇文章中,凯哥给大家介绍了Python中的常量(字面值). 测试凯哥:软件测试学Python(六):Python中的常量zhuanlan.zhihu.com 在这篇文章中,凯哥带各位学习测试的知 ...
- java unix 时间戳_「unix时间戳」Unix时间戳和Java中的时间戳的区别 - seo实验室
unix时间戳 前言 最近在使用阿里的日志服务时,遇到了一些Timestamp的坑,所以特意做了了解并整理了一下.在这之前首先得介绍一下Unix时间戳:unix时间戳是从1970年1月1日(UTC/G ...
- 传递字符串_一道经典面试题:字符串在Java中如何通过“引用”传递
这是Java的一个经典问题. stackoverflow上也有很多类似的问题,有很多不正确/不完整的答案. 如果你想的不多,问题很简单. 但如果你多想想,可能会很困惑. 一.一个有趣且令人困惑的代码片 ...
- 关于python字典以下选项中描述错误的是_关于 Python 对文件的处理,以下选项中描述错误的是_学小易找答案...
[单选题]小花最近疯狂迷恋李佳琦的推销产品,在李佳琦的广告营销下,小花兴致冲冲的买下来一只某牌口红,回来后却发现不适合自己,扔在一边闲置.根据消费者性格划分属于哪种购买行为? [单选题]采用邀请招标方 ...
- 关于python赋值语句下列选项中描述正确的是_关于Python的分支结构,以下选项中描述正确的是()。...
38.并集选择器是各个选择器通过逗号连接而成的,关于构任何形式的选择器都可以作为并集选择器的一部分.() 若变量a.支结中描b.t已经正确定义,要将a和b中的数据进行交换,以下选项中不正确的是 若有以 ...
最新文章
- 【杂】突然有个想法,为了防止公司或其他,监视你的qq或微信,可以做个程序,将信息打乱,分别用qq和微信传输,然后,再还原
- 学习之路-现代密码学基础-001
- 网站建设需要遵守的三大原则!
- hadoop 全分布式部署
- 网络知识:秒懂你家的网络连接方式
- JVM Class 类文件结构 (系列号2)
- Mysql表的过滤查询
- SHELL下去掉变量中的回车换行
- Win11字体显示不全怎么解决?
- Java 基础高频面试题(2022年最新版)
- mongodb的基本使用
- std::numeric_limits使用
- 如何删除电脑上卸载软件的残留文件,清理软件残留?
- 爬取京东图书商品信息
- js如何判断闰年?整除的符号是什么?
- 计算机如何连接共享网络设置,win7怎么共享无线_win7共享网络的设置方法
- Win10前面板插口耳机无声音,无Realtek控制器,前置耳机孔无法使用解决方案!
- mysql 烂泥行天下_烂泥:mysql数据库使用的基本命令
- ffmpeg输出x264的CBR流或者文件
- Git与GitHub说明分析
热门文章
- input 限制只能输入数字,且保留小数后两位
- android surface windows,Android易混概念辨析之Surface,Window,View,SurfaceView,Bitmap
- cad常青藤插件_CAD作图效率低怎么办?最全辅助插件大合集,绘图效率提升70%,限时分享...
- 新开博了,欢迎大家来做客!
- 【编译原理笔记19】代码优化: 支配结点和回边,自然循环及其识别,删除全局公共子表达式和复制语句,代码移动,作用于归纳变量的强度削弱,归纳变量的删除
- 在Ubuntu和CentOS上搭建NodeJs的执行环境步骤
- Linux的用户和组群管理
- mysql配置主从数据库_mysql配置主从数据库
- spring整合xfire
- The Most Important Skill for Software Architects