数据库中存日期使用datetime与timestamp类型与Java相应收接类型的实验使用LocalDateTime与Timestamp类测试
Posted 冬季吹来思念
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库中存日期使用datetime与timestamp类型与Java相应收接类型的实验使用LocalDateTime与Timestamp类测试相关的知识,希望对你有一定的参考价值。
准备工作
前端使用element-ui的组件、后端自己写接收类、
@PostMapping("/savetime")
public void saveTime(@RequestBody MyTimeDto myTimeDto)
String strTime = myTimeDto.getMt();
System.out.println(strTime);
//2022-12-04T03:30:57.000Z
最终后端接收到类似这样"2022-12-04T03:30:57.000Z"的字符串
数据库中设计表:分别有timestamp类型和datetime类型
测试接收时间并保存至数据库
编写mapper: SaveTime添加功能
@Mapper
public interface SaveTime
@Insert("insert into mtable values (null,#timestamp,#localDateTime)")
void saveTi(Timestamp timestamp,LocalDateTime localDateTime);
看下controller层
@Autowired
SaveTime saveTime;
@PostMapping("/savetime")
public void saveTime(@RequestBody MyTimeDto myTimeDto)
//接收前端的数据
String strTime = myTimeDto.getMt();
System.out.println(strTime);
//制造LocalDateTime和Timestamp类对象
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
LocalDateTime localDateTime = LocalDateTime.parse(strTime, dateTimeFormatter);
Timestamp timestamp = Timestamp.valueOf(localDateTime);
//保存到数据库、看是否成功
saveTime.saveTi(timestamp,localDateTime);
看到保存成功、
此时数据库中timestamp类型对应java中Timestamp、
数据库中datetime类型对应java中LocalDateTime。
那么反过来呢?下面实验一下
看到依旧成功新增
测试取出时间
编写mapper: SaveTime添加功能
@Select("select * from mtable where id = #id")
MyTime selectByID(int id);
接收实体类MyTime:均采用LocalDateTime类型
public class MyTime
private String id;
private LocalDateTime timestamp;
private LocalDateTime localDateTime;
//get、set、toString方法省略
编写测试类
@Autowired
private SaveTime saveTime;
@Test
void myTest()
MyTime myTime = saveTime.selectByID(1);
System.out.println(myTime);
//MyTimeid='1', timestamp=2022-12-03T15:54:35, localDateTime=2022-12-03T15:54:35
再将实体类MyTime:均采用Timestamp类型也均能从数据库中取出接收。
数据库的日期类型字段该如何选择
参考技术A Mysql中经常用来存储日期的数据类型有三种:Date、Datetime、Timestamp。Date数据类型:用来存储没有时间的日期。Mysql获取和显示这个类型的格式为“YYYY-MM-DD”。支持的时间范围为“1000-00-00”到“9999-12-31”。
Datetime类型:存储既有日期又有时间的数据。存储和显示的格式为 “YYYY-MM-DD HH:MM:SS”。支持的时间范围是“1000-00-00 00:00:00”到“9999-12-31 23:59:59”。
Timestamp类型:也是存储既有日期又有时间的数据。存储和显示的格式跟Datetime一样。支持的时间范围是“1970-01-01 00:00:01”到“2038-01-19 03:14:07”。
所有不符合上面所述格式的数据都会被转换为相应类型的0值。(0000-00-00或者0000-00-00 00:00:00)
以上是关于数据库中存日期使用datetime与timestamp类型与Java相应收接类型的实验使用LocalDateTime与Timestamp类测试的主要内容,如果未能解决你的问题,请参考以下文章