timestamp类型增加天、月、年后的时间

字段类型为Timestamp加几天、几月、几年后的时间

一、使用Calendar类
1、java中将overdue取出,用TimeStamp 类型的变量接收timestamp;
2、实例化一个Calendar类的实例
3、将timestamp转换为Calendar
4、进行加减操作
5、转回TimeStamp 类型

package com.test;
import java.sql.Timestamp;
import java.util.Calendar;
public class timestample {
	public static void main(String[] args) {
		//获取当前时间
		Timestamp timestamp0  = new Timestamp(System.currentTimeMillis());
		Calendar c = Calendar.getInstance();
		c.setTime(timestamp0);
	    c.add(Calendar.DATE, 1);  //  加一  天
	    //c.add(Calendar.MONTH, 1); //  加一个月
		//c.add(Calendar.YEAR,1);   //  加一  年
		Timestamp time1 = new Timestamp(c.getTimeInMillis());
		System.out.println(time1);
	}
}

二、拓展 利用毫米值 进行计算

package com.test;
import java.sql.Timestamp;
public class timestample {
	public static void main(String[] args) {
		
		Timestamp timestamp  = new Timestamp(System.currentTimeMillis());
		
		//加一天
		long time=timestamp.getTime()+(long)1000*3600*24;     
		//加一个月   注:一个月按30天算
		long time3 =timestamp.getTime()+(long)1000*3600*24*30;
		//加一年
		long time4 =timestamp.getTime()+(long)1000*3600*24*365;
		
		Timestamp timestamp2 =new Timestamp(time);
		Timestamp timestamp3 =new Timestamp(time3);
		Timestamp timestamp4 =new Timestamp(time4);
		//  转回Timestamp
		System.out.println("当前时间:"+timestamp);
		System.out.println("加上一天:"+timestamp2);
		System.out.println("加一个月:"+timestamp3);
		System.out.println("加上一年:"+timestamp4);
	}
}
### 时间戳2038问题概述 时间戳2038问题是指在2038年119日03:14:07 UTC之后,使用32位带符号整数来表示Unix时间戳的计算机系统将无法正确处理日期和时间,这可能导致系统错误或崩溃[^1]。 ### MySQL中的Timestamp类型限制 MySQL数据库中`TIMESTAMP`数据类型的实现依赖于底层操作系统的时间戳机制。对于许多当前版本而言,该类型仅能存储直到2038-01-19的最大值,这是因为其内部采用了基于相同32位有符号整数格式来记录自纪元以来秒级计数的方式[^3]。 ### 解决方案探讨 #### 方案一:采用更大范围的数据类型 为了避开这一局限性并确保长期稳定性,推荐的做法之一就是切换至能够容纳更广泛数值区间的数据结构。例如: - **DATETIME** 类型可以直接替代 `TIMESTAMP` 来保存日期时间信息而不受上述影响,因为它并不受限于特定计算方式而是固定长度字符串形式表达绝对时刻; ```sql ALTER TABLE table_name MODIFY column_name DATETIME; ``` - 或者选用更高精度且不受此约束影响的大整数字段(如 BIGINT),用于手动管理 Unix 时间戳值,并由应用程序层负责解析显示; ```sql ALTER TABLE table_name MODIFY column_name BIGINT UNSIGNED; ``` #### 方案二:调整业务逻辑设计 如果应用层面允许的话,还可以通过改变架构思路绕开直接操作可能存在问题的数据列。比如增加额外辅助表专门存放超出支持年限后的事件记录,或是利用分布式文件系统作为外部存储介质等手段间接规避风险。 ### 实施注意事项 无论采取哪种方法,在执行变更前都应充分评估现有系统的兼容性和迁移成本,测试新配置下的性能表现,同时考虑到不同平台间可能存在差异化的最佳实践指南[^2]。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值