数据库中存日期使用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类测试的主要内容,如果未能解决你的问题,请参考以下文章

数据库日期时间显示在页面上格式错误的解决方案

关于MYSQL 时间类型存储在数据库里是啥类型

XML Schema格式的"日期型数据”数据库存取

将 DateTime 与存储在数据库中的日期进行比较

pydantic学习与使用-10.日期时间类型(datetime)

在 group by 中使用 datetime 日期并在单个 SELECT 中使用 order by 与使用子查询