mybatis-sqlite日期类型对应关系
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mybatis-sqlite日期类型对应关系,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1892字,纯文字阅读大概需要3分钟。
内容图文
1.问题
sqlite数据库
user表,create_time字段,类型DATETIME,设置默认值datetime('now')
mybatis,User实体,createTime类型为java.util.Date
插入一条数据
@Test @Transactional @Rollback(false) public void insert(){ User user = new User(); user.setId("3"); user.setUsername("user1"); user.setName("王五"); user.setAge(18); userService.insert(user); }
查询数据
@Test public void get(){ try{ List<User> list = userService.get(); for(User user : list){ System.err.println(user); } }catch(Exception e){ e.printStackTrace(); } }
抛出异常
Caused by: java.text.ParseException: Unparseable date: "2019-12-12 12:08:26" does not match (\p{Nd}++)\Q-\E(\p{Nd}++)\Q-\E(\p{Nd}++)\Q \E(\p{Nd}++)\Q:\E(\p{Nd}++)\Q:\E(\p{Nd}++)\Q.\E(\p{Nd}++) at org.sqlite.date.FastDateParser.parse(FastDateParser.java:299) at org.sqlite.date.FastDateFormat.parse(FastDateFormat.java:490) at org.sqlite.jdbc3.JDBC3ResultSet.getTimestamp(JDBC3ResultSet.java:540) ... 77 more
2.解决问题
方法1:将create_time字段默认值改为strftime('%s','now')
建议使用这种方式,因为如果从java里插入时间数据,将会插入数字(1970年1月1日到现在的秒数)
@Test @Transactional @Rollback(false) public void insert(){ User user = new User(); user.setId("5"); user.setUsername("user1"); user.setName("王五"); user.setAge(18); user.setCreateTime(new Date(100000000000L)); userService.insert(user); }
方法2:或者strftime('%Y-%m-%d %H:%M:%f','now')
3.sqlite获取当前时间
3.1获取当前时间:
select datetime('now')
结果:2017-04-12 09:47:12
3.2如果需要精确到毫秒,使用:
select strftime('%Y-%m-%d %H:%M:%f','now')
结果:2017-04-12 17:48:35.890
3.3获取从1970年1月1日到现在的秒数(Unix时间戳):
select strftime('%s','now')
结果:1491985972
4.原理
sqlite将字符串转换为Date使用FastDateFormat转换
等同于下面代码
@Test public void test() throws ParseException{ FastDateFormat dateFormat = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss.SSS"); Date d = dateFormat.parse("2019-12-12 19:26:55"); System.err.println(d); }
内容总结
以上是互联网集市为您收集整理的mybatis-sqlite日期类型对应关系全部内容,希望文章能够帮你解决mybatis-sqlite日期类型对应关系所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。