【发布时间】:2018-10-11 11:19:32
【问题描述】:
我的问题是我不知道如何处理一个空的 LocalDate 对象。
我有一个 Excel 表,其中有一个日期列。格式是这样的:
19693112 或者 00000000(如果日期未知)
在我的 java 应用程序中,我更改了数据的格式并将其上传到数据库。
我首先将字符串转换为我需要的格式(即 31.12.1969)。
我可以毫无问题地将第一种格式插入到我的数据库中。但是第二个永远不会起作用,因为我的转换类将其转换为 00.00.0000,而 MS Access 不接受这一点。
我已经尝试将我想要的值设置为“null”,但数据库无法处理日期字段的此值。
有没有办法让数据库中的值只显示一个空的日期字段?
感谢您的帮助。
public static void insertNewPensioners(List<Pensioner> newPensioners) {
if (cell.getColumnIndex() == indexe.get(19)) { //checks if correct excelcell is used
String cellValue = cell.getStringCellValue();
if (cellValue.matches("0+")) {
resignationDate = null;
} else {
resignationDate = DateFormatter.formatDate(cellValue);
}
pensionerExcel.add(new Pensioner(pknr, idkz, resignationDate));
insertNewPensioners(newPensioners);
public static void insertNewPensioners (List < Pensioner > newPensioners) {
try {
connect(pathDB);
} catch (Exception e) {
Alerts.connectionError();
e.printStackTrace();
}
for (int i = 0; i < newPensioners.size(); i++) {
String insert = ("Insert into Pensionär (PKNR, IDKZ, ResignationDate) VALUES " +
"(?,?,?)");
try {
ps = connection.prepareStatement(insert);
ps.setInt(1, newPensioners.get(i).getPensionInsuranceNumber());
ps.setInt(2, newPensioners.get(i).getIdkz());
ps.setDate(3, Date.valueOf(newPensioners.get(i).getResignationDate()));
ps.executeUpdate();
validRows++;
} catch (Exception e) {
Alerts.wrongValues();
e.printStackTrace();
}
}
close();
}
【问题讨论】:
-
你可以尝试这样设置DateTime(DateTimeZone zone),所以你只设置时区,日期为空。数据库应该能够处理这个
-
对不起。如果有区别,请输入 LocalDate 而不是 DateTime。
-
当然应该在您的字符串转换代码中检查 0000000 值并替换为 Null ?您如何尝试插入 Null 值
-
尝试 jorciney 在此处发布的修复 stackoverflow.com/questions/44302837/…
-
您想在 Access 数据库中插入什么?数据库空值? MS Access 可以接受的最低日期是 0101-01-01 00:00:00
标签: java database datetime ms-access datetime-format