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();
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:)
at org.sqlite.date.FastDateFormat.parse(FastDateFormat.java:)
at org.sqlite.jdbc3.JDBC3ResultSet.getTimestamp(JDBC3ResultSet.java:)
... more

2.解决问题

方法1:将create_time字段默认值改为strftime('%s','now')

建议使用这种方式,因为如果从java里插入时间数据,将会插入数字(对象表示的自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数)

strftime('%s','now'),从1970年1月1日到现在的秒数

一个秒数,一个毫秒数

    @Test
@Transactional
@Rollback(false)
public void insert(){
User user = new User();
user.setId("");
user.setUsername("user1");
user.setName("王五");
user.setAge();
user.setCreateTime(new Date(100000000000L));
userService.insert(user);
}

方法2:或者strftime('%Y-%m-%d %H:%M:%f','now')

方法3:将实体User的字段createTime改为字符串

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日期类型对应关系的更多相关文章

  1. mybatis 插入日期类型精确到秒的有关问题

    mybatis 插入日期类型精确到秒的问题 Mybatis 插入 数据库是为了防止插入空时报错, Mybatis 提供了一套机制,只要给定插入的字段的类型,如果为空,则它会自动处理为相应类型的默认值: ...

  2. Android sqlite日期存储

    SQLite日期类型是以TEXT.REAL和INTEGER类型分别不同的格式表示的,对应如下:TEXT: "YYYY-MM-DD HH:MM:SS.SSS"REAL: 以Julia ...

  3. [原创]java WEB学习笔记81:Hibernate学习之路--- 对象关系映射文件(.hbm.xml):hibernate-mapping 节点,class节点,id节点(主键生成策略),property节点,在hibernate 中 java类型 与sql类型之间的对应关系,Java 时间和日期类型的映射,Java 大对象类型 的 映射 (了解),映射组成关系

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  4. mybatis查询日期时间数据得到long类型数据的问题

    使用mybatis查询数据时,如果数据库存储的是timestamp.datetime.date.time等时间类型,而Java bean也使用的是date类型,mybatis会自动将date类型转换为 ...

  5. LocalDateTime与mysql日期类型的交互(基于mybatis)

    众所周知,在实体Entity里面,可以使用Java.sql.Date.java.sql.Timestamp.java.util.Date来映射到数据库的date.timestamp.datetime等 ...

  6. Mybatis 向MySql数据库插入带有日期类型字段的数据

    我们的实体类里面一个字段的日期类型是util.Date,在向数据库插入该实体时会报错,说是 日期哪个字段 Data truncation.所以需要做些更改在mybatis的MAPPER映射文件中对插入 ...

  7. mybatis 自定义类型转换器 (后台日期类型插入数据库)

    后台日期类型插入数据库 有以下几种发法: 1 调用数据库 日期字符串转日期函数 str_to_date("日期","yyyy-MM-dd HH:mm:ss") ...

  8. MyBatis jdbcType常用类型

    MyBatis jdbcType常用类型 jdbcType与javaType对应关系 javaType jdbctype CHAR String VARCHAR String LONGVARCHAR ...

  9. SpringMVC提交数据遭遇基础类型和日期类型报400错误解决方法

    使用SpringMVC开发的时候,页面如果有日期格式的数据,后台接受也是java.util.Date,则报告400错误 .下面是解决方案的演示示例: 这个是实体类,里面createDate就是java ...

随机推荐

  1. PHP 的一款http请求封装类

    <?php namespace hisi; class Http { protected static $userAgent = [ 'Mozilla/5.0 (Windows NT 6.1; ...

  2. Js保存图片到本地

    注:此方法是使用hbuilderx云打包之后才能用,否则在浏览器中会报 plus is not defined 官方文档 http://www.html5plus.org/doc/zh_cn/gall ...

  3. java通过poi读取excel中的日期类型数据或自定义类型日期

    Java 读取Excel表格日期类型数据的时候,读出来的是这样的  12-十月-2019,而Excel中输入的是 2019/10/12 或 2019-10-12 poi处理excel时,当excel没 ...

  4. 如何通过Restful API的方式读取SAP Commerce Cloud的Product图片

    需求:我在SAP Commerce Cloud的backoffice里给某product维护了一些图片: 分别位于Normal,Thumbnails和Others等字段: 现在我想通过Restful ...

  5. springboot2.1.3 + redisTemplate + Lock 操作 redis 3.0.5

    近期在整合springboot + redis 的功能,本来想用原生的jedit api,最后想想有点 low,搜了一把,boot已经提供给我们操作的方法,那就是 使用 redisTemplate 或 ...

  6. Nginx配置文件示例

    Nginx的配置文件示例:(仅供参考) 强烈建议先将默认的配置文件备份再进行操作! 请根据自己项目的实际路径来配置相关路径! uwsgi配置文件请参考:uwsgi配置文件示例 # For more i ...

  7. Linux磁盘管理——MBR 与 GPT

    硬件设备在Linux中文件名 如今IDE 磁盘几乎被淘汰,市面上最常见的磁盘就是SATA和SAS.个人计算机主要是SATA.很多Linux发行版下都将IDE磁盘文件名也都被仿真成 /dev/sd[a- ...

  8. orm字段类型使用

    IntegerField:整数类型,映射到数据库中会变成11位的int类型 num是整型字典  object中的5是第五行还是id是5? 整型字符串型都可以传到整数字段 FloatField:浮点数类 ...

  9. css详解1

    1.css的三种引入方式: 1.1.行内引入 <div style="color:red;">魔降风云变</div> <html> <he ...

  10. PS批量截取图片

    本文提供的是需要截取大量图片的方法,仅供参考. 打开ps,在菜单栏找到窗口,点击窗口里面的动作 窗口右上方 或者下方会出现一个小窗口 点击小窗口右下角删除图标旁边的图标新建动作,工作名称:截取图片 . ...