Моя программа на Java подключается к базе данных (Oracle XE 11g), которая содержит много дат (формат даты OracleXE установлен на syyyy/mm/dd).
Выполнение запроса в базе данных с отрицательными датами (до Христа) работает нормально. Когда я делаю это на Java, все они меняются на AD (Anno Domini). Как я могу получить даты в Java с учетом AD/BC?
Мой Java-код здесь выполняет запрос к БД и помещает результат в таблицу.
try {
Object item=cbPD.getSelectedItem();
String dacercare=item.toString();
query = "SELECT DISTINCT PD.Titolo,PD.Inizio,(Select E.nome From Evento E WHERE PD.Inizio_Evento=E.CODE),
PD.Fine, (Select E.nome From Evento E WHERE PD.Fine_Evento=E.CODE ) FROM Periododelimitato PD WHERE PD.Titolo=?";
PreparedStatement stAccess = Login.connessione.prepareStatement(query, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
stAccess.setString(1,dacercare);
rset = stAccess.executeQuery();
j = modelPD.getRowCount();
for (i=0; i<j; i++) modelPD.removeRow(0);
Date data;
while (rset.next()) {
data = rset.getDate(2);
modelPD.addRow(new Object[]{rset.getString(1),data, rset.getString(3), rset.getString(4), rset.getString(5)});
}
}
Вот Пример использования определенного запроса:
try {
query = "SELECT PD.Inizio FROM PeriodoDelimitato PD WHERE PD.CodP=?";
String dacercare="8"; //look for record with this specific Primary key
PreparedStatement stAccess = Login.connessione.prepareStatement(query,
ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
stAccess.setString(1, dacercare);
rset = stAccess.executeQuery();
while(rset.next()) {
Date dateBC = rset.getDate(1);
modelPD.addRow(new Object[]{null, dateBC, null, null, null});
}
Вывод в Java:
0509-01-01
Вывод с использованием того же запроса (заменив ? на указанный первичный ключ) в разработчике Sql:
-0509/01/01
Примечание к запросу: столбец, выбранный в этом примере, имеет в Oracle тип DATE.
Добавление информации: СУБД — Oracle (XE 11g), БД построена на IDE (разработчик SQL). Программа написана на Java через Netbeans 8.2. Я подключаюсь к базе данных в Netbeans, добавляя библиотеку «ojdbc6.jar».
getObject(2, LocalDateTime.class)
.java.sql.Date
основано на миллисекундах с 01.01.1970. - person Mark Rotteveel   schedule 19.10.2017ojdbc6.jar
? Вы действительно работаете на Java 6? - person Andreas   schedule 19.10.2017java.sql.Date
илиjava.util.Date
. Эти неприятные старые классы теперь заменены классами java.time. - person Basil Bourque   schedule 20.10.2017