关于使用bigint类型存储时间

本文介绍了一种在项目中将MySQL数据库中存储的bigint类型时间转换为datetime类型的解决方案。通过修改实体类的get和set方法,实现了从数据库读取数据时的自动转换,并在mybatis-plus的mapper中自定义了查询方法,确保了写入操作的正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于使用bigint类型存储时间

项目里遇到了一个场景mysql中存储时间的格式是bigint类型,要将它转为datetime类型显示.在这里插入图片描述

通过网上的一些方法做了尝试,解决了中间遇到的一些问题.

首先在场景实现的过程中,有读和写两种需求,

首先是读,可以直接对实体的相关字段的set方法进行修改
在这里插入图片描述

这里原本是自动生成的get,set方法,对其进行了修改,这样在初步读取数据库数据的时候,就会直接将bigint转成需要的样子
在这里插入图片描述
这两个字段的属性

在这里插入图片描述
转格式的方法

这样从数据库读出来的数据就直接是需要的样子了.

接下来是写,这里使用的是mybatis-plus,在mapper里自定义了查询方法,

``

Integer updateReplyTimeByPkId(@Param("pkId") Integer pkId,@Param("reply") String reply, @Param("replyTime") Long replyTime);

Integer updateStateByPkId(@Param("pkId") Integer pkId,@Param("updateTime") Date updateTime);

这里则是数据库查询语句
在这里插入图片描述
只要在调用dao中的方法,传入对应的参数即可,

值得一提的是,date类型的时间要精确到分秒才能转成13位的long类型,且必须通过数据库语句,在数据库中进行插入bigint类型的操作,java中bigint类型只能支持11位.

<think>好的,我现在要回答用户关于BIGINT数据类型的问题,需要涵盖定义、使用场景和数据库实现。首先,我得回忆一下BIGINT的基本定义,通常它是一个大范围的整数类型,比普通的INT更大。比如在MySQL中,BIGINT是8字节,范围从-2^63到2^63-1。而PostgreSQL可能也有类似的实现,但可能有不同的名称或扩展。 接下来是使用场景。用户可能想知道什么时候应该选择BIGINT而不是其他整数类型。比如,当需要存储非常大的数值,如人口数量、社交媒体上的用户ID,或者金融交易中的大额数字时,BIGINT就派上用场了。这时候要避免数据溢出,确保数值在范围内。 然后是数据库实现部分。不同数据库系统对BIGINT的处理可能不同。比如SQLite是动态类型,但用户提到从3.37.0开始支持严格模式,这时候BIGINT可能被严格约束。而像ClickHouse这样的列式数据库,可能会有不同的存储优化,比如使用FixedString或者其他方式来处理大整数,但用户提供的引用中提到String类型替代了VARCHAR等,不过BIGINT应该还是作为数值类型处理。 还需要注意类型转换的问题,比如在JavaScript中BigInt的转换规则,但用户的问题集中在数据库中的BIGINT,所以可能主要讨论数据库方面的内容。同时要引用用户提供的参考资料,比如引用[4]提到BigInt的转换,可能在应用层处理时需要注意,但数据库中的BIGINT更多是存储方面的问题。 另外,用户提到的ENUM类型和String类型可能不直接相关,但需要确保回答专注于BIGINT。需要注意区分数据库中的BIGINT和编程语言中的BigInt,比如JavaScript的BigInt是另一种概念,但用户的问题主要是数据库中的数据类型。 最后,生成相关问题时要围绕BIGINT的可能疑问,比如与其他整数类型的比较、溢出处理、性能影响等。要确保问题有针对性,帮助用户深入理解。</think>### BIGINT 数据类型详解 #### **1. 定义** BIGINT 是一种整数数据类型,用于存储大范围的整数值。其存储空间和数值范围因数据库系统而异: - **典型范围**:$-2^{63}$ 至 $2^{63}-1$(8字节,如 MySQL、PostgreSQL)[^4] - **无符号版本**:$0$ 至 $2^{64}-1$(部分数据库支持,如 MySQL) 数学表达: $$ \text{取值范围} = [-9,223,372,036,854,775,808, 9,223,372,036,854,775,807] $$ --- #### **2. 使用场景** 1. **超大数值存储** - 用户 ID(社交媒体平台)、交易流水号(金融系统) - 科学计算中的天文数字(如粒子计数) 2. **避免整数溢出** 当普通整数类型(如 INT)无法满足范围需求时,例如: ```sql -- 统计全球每日网络请求量(可能超过 INT 的 21 亿上限) CREATE TABLE network_logs ( request_count BIGINT ); ``` 3. **主键与索引** 在分布式系统中,使用 BIGINT 生成全局唯一 ID(如雪花算法)[^2] --- #### **3. 数据库实现差异** | 数据库 | 实现特性 | |--------------|--------------------------------------------------------------------------| | **MySQL** | 严格区分有符号/无符号 BIGINT,支持 AUTO_INCREMENT | | **PostgreSQL** | 提供 BIGSERIAL 类型(自增 BIGINT),支持序列生成 | | **SQLite** | 动态类型BIGINT 仅作为声明提示,实际存储由值决定;严格模式下强制类型约束[^1] | | **ClickHouse** | 优化压缩存储,支持 BIGINT 与其他数值类型高效计算 | **类型转换示例**(以 JavaScript 为例): ```javascript BigInt("9007199254740993"); // 精确表示超过 Number 类型安全范围的整数[^4] ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值