java - java.sql.Timestamp 可以处理的最大年份是多少?

标签 java sql oracle date timestamp

我正在尝试在我的程序中创建一个最大日期:

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

Date maxDate = new Date(Long.MAX_VALUE);
...
Timestamp ts = new Timestamp(maxDate.getTime());

如果我是正确的 maxDate.getTime(); 返回 Long.MAX_VALUE 的值,那么这并不重要,我可以简单地写 new Timestamp(Long.MAX_VALUE); 我说得对吗?

我的问题是此时我的程序给出了以下异常:

java.sql.SQLException: Year out of range.

那么可以传递给Timestamp的最大long值是多少呢? 或者还有什么我在这里遗漏的吗?

如果重要的话,我会使用 Oracle 数据库。

提前致谢!

最佳答案

java.util.Date 可以处理的最大年份是 292278994

When will the java date collapse?

java.sql.Timestamp 的最大年份值为 9999

很确定这就是它的工作原理,因为我不断收到这个错误:

ORA-01841:(完整)年份必须介于 -4713 和 +9999 之间,并且不能为 0

关于java - java.sql.Timestamp 可以处理的最大年份是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33255430/

相关文章:

mysql - 为什么在oracle中引入散列分区?有什么好处

java - Java条码生成

java - 解析 Java 服务器异常日志

java - 通过调用数据库来 stub /模拟方法的问题

mysql - SQL:从右边开始的子串

oracle - 我的 sql 脚本如何确定它是在 sqldeveloper 还是 sqlplus 中运行?

Java OO Design 帮助 - 如何抽象出一个保存方法?

mysql - 如何加快这个缓慢的查询

sql - 具有表值参数的参数化查询

oracle - 为什么此查询比 ANSI JOIN 版本执行得更好?