实体类中时间的数据类型Date、Timestamp、LocalDateTime区分以及常用的jdbcType数据类型

2 篇文章 0 订阅

在oracle数据库中新建表时用的Date来储存的时间信息,后端Java代码中mp代码生成器生成表中实体类字段,然后时间就默认的LocalDateTime类型,现在有一个新增需求需要添加时间就遇到问题了。
在Java中可以有这些方法获取时间:
1:通过调用System.currentTimeMillis();这个方法是获取系统当前时间的方法,这个方法经过测试是获取时间速度最快的方法,返回值是一个long型的数据。这个值其实是距离 1970-01-01 00:00:00 相差的毫秒数。

import java.util.Date;

public class Test {
	public static void main(String[] args) {
        //方法一
		Date date = new Date();
		System.out.println(date.getTime());
		//方法二
        System.out.println(System.currentTimeMillis());
	}
}

2:获取当前时间,通过Util包下的Date类获取,格式为:yyyy-MM-dd :hh:mm:ss

import java.text.SimpleDateFormat;
import java.util.Date;

public class Test {
	public static void main(String[] args) {
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
		System.out.println(df.format(new Date()));// new Date()获取当前系统时间
        
	}
}

3:获取当前时间,通过sql包下的Timestamp类获取,精确到毫秒,格式为:yyyy-MM-dd :hh:mm:ss:nnn

import java.sql.Timestamp;
import java.util.Date;

public class Test {
	public static void main(String[] args) {
		System.out.println(new Timestamp(new Date().getTime()));
		System.out.println(new Timestamp(System.currentTimeMillis()));
	}
}

4:获取当前时间,可以获取单个时间域,通过Util包下的Calendar获取

import java.util.Calendar;

public class Test {
	public static void main(String[] args) {
		Calendar c = Calendar.getInstance();// 可以对每个时间域单独修改
        
		int year = c.get(Calendar.YEAR);
		int month = c.get(Calendar.MONTH+1);
		int date = c.get(Calendar.DATE);
		int hour = c.get(Calendar.HOUR_OF_DAY);
		int minute = c.get(Calendar.MINUTE);
		int second = c.get(Calendar.SECOND);
        
		System.out.println(year + "/" + month + "/" + date + " " + hour + ":" + minute + ":" + second);
	}
}

一开始我用的是Calendar获取时间:
在这里插入图片描述然后运行报错:
java.time.format.DateTimeParseException: Text ‘2021-02-04 14:21:48’ could not be parsed at index 10
通过修改:
在这里插入图片描述
解决问题。然后执行方法新增数据,成功了…额…为什么上午就一直不行,应该是我后面另一种可行的方法改了下sql语句这里也可以了。。。我是**
在这里插入图片描述可以看到这里的时间数据类型用的是DATE,最开始我是这样写的:TO_DATE(’#{starttime,jdbcType=DATE}’, ‘yyyy-MM-dd’)然后就一直报错说文字与字符串类型不匹配,因为这样在PL/SQL中可以直接执行,所以我就直接拿过来了,然后就导致了这类问题。
然后说一下另外两种类型,我也用了Timestamp,获取到的时间在最后面秒有一个.0也可以去掉!
用Date实现获取时间可以是这样的:
在这里插入图片描述将最开始的时间数据类型 java.util.Date转换为 java.sql.Date类型
在java.util.Date转java.sql.Date的过程中时分秒会丢失,所以需要处理一下得到完整的数据,但是我发现在我的项目中,在Java中传输时没有时分秒,但是储存到数据库时查看又有时分秒数据了。
也还遇到一个异常:
java.sql.SQLException: ORA-01810: 格式代码出现两次
在这里插入图片描述这里分享看到的一位大佬整理的常用jdbcType数据类型
在这里插入图片描述Mybatis技术——常用的jdbcType数据类型

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值