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);
}

最新文章

  1. poj 1239
  2. vs2015打包winform程序遇到的一系列问题
  3. angular2开发01
  4. Vault插件示例--Vault Explorer与Thin Client的集成。
  5. Sqoop_mysql,hive,hdfs导入导出操作
  6. 基于cmake编译安装MySQL-5.5
  7. Plug-in &#39;org.eclipse.cdt.ui&#39; contributed an invalid Menu Extension
  8. build.gradle 使用tips
  9. Add controls dynamically in flowlayoutpanel
  10. 图片ppm编码格式
  11. .net 资源
  12. MFC之窗体改动工具栏编程状态栏编程程序启动画面
  13. IOS 私有变量 私有属性的书写方法
  14. Java简单实用方法一
  15. 使用Anaconda虚拟环境编译caffe-gpu pycaffe
  16. ZOC7在Mac下发送命令到多个窗口设置
  17. wonder vscode plugins
  18. 转:10分钟了解JS堆、栈以及事件循环的概念
  19. linux 修改密码命令
  20. linux基础知识(1)

热门文章

  1. 基于【 springBoot +springCloud+vue 项目】一 || 后端搭建
  2. 【Linux内核】CPU和线程
  3. vue实现滑块滑动校验
  4. Python——字符串增加颜色
  5. c# DirectoryInfo类
  6. CPNtools 模拟工具适合分析什么样的协议
  7. my.cnf参数说明
  8. Jmeter4.0 _Beanshell解析并获取json响应数据数组长度
  9. JVM参数优化(基础篇)
  10. Codeforces Round #581 (Div. 2)-E. Natasha, Sasha and the Prefix Sums-动态规划+组合数学