use*_*574 2 java postgresql timestamp date
我正在创建一个年份的Date对象,然后尝试将其保存到Postgres.它正在Java代码中正确创建一个对象,但在将其保存到数据库时会出错.String2015123Datetimestamp out of range
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
Date date = sdf.parse("06/09/2015123"); // Here I inserted year 2015123.
Run Code Online (Sandbox Code Playgroud)
它正在转换像这样的日期对象.
2015123-06-09 00:00:00.0
Run Code Online (Sandbox Code Playgroud)
虽然我想在Postgres中保存它,但它给了我一个错误.
timestamp out of range
Run Code Online (Sandbox Code Playgroud)
我想Date在java中验证对象.尽管有Postgres错误,是否有可能在Java中进行验证?
该方法setLenient(false)无济于事。但是你可以这样做:
SimpleDateFormat f = new SimpleDateFormat("MM/dd/yyyy");
f.setLenient(false);
Date date = f.parse("06/09/2015123"); // Here I inserted year 2015123.
System.out.println(date); // Sat Jun 09 00:00:00 CEST 2015123
GregorianCalendar cal = new GregorianCalendar();
cal.setTime(date);
System.out.println("Out of range: " + (cal.get(Calendar.YEAR) > 9999)); // Out of range: true
Run Code Online (Sandbox Code Playgroud)
SQL 规范只要求支持 9999 年之前的年份。PostgreSQL 甚至可以支持到公元 294276 年的时间戳列,但这仍然不够。您应该定义自己的合理上限,因为从用户的角度来看,即使是 9999 也可能是错误的。
| 归档时间: |
|
| 查看次数: |
8755 次 |
| 最近记录: |