При использовании JDBC для SQLite по какой-то причине значения даты и отметки времени правильно хранятся в БД, отображаются правильно при использовании инструмента командной строки sqlite3, но при использовании функций ResultSet для получения этих значений он не работает. Ниже представлен небольшой тестовый класс, демонстрирующий, что я имею в виду.
import java.sql.*;
public class Test {
public static void main(String[] args) throws Exception {
Class.forName("org.sqlite.JDBC");
Connection conn = DriverManager.getConnection("jdbc:sqlite:test.db");
Statement stat = conn.createStatement();
stat.executeUpdate("drop table if exists people;");
stat.executeUpdate("create table people (name, occupation, date date);");
stat.executeUpdate("insert into people values ('Turing', 'Computers', date('now'));");
ResultSet rs = stat.executeQuery("select * from people;");
while (rs.next()) {
System.out.println("name = " + rs.getString("name"));
System.out.println("job = " + rs.getString("occupation"));
System.out.println("date = " + rs.getDate("date"));
System.out.println("dateAsString = " + rs.getString("date"));
}
rs.close();
conn.close();
}
}
Я получаю следующий результат:
name = Turing
все возвращают неправильные значения При использовании JDBC для SQLite по какой-то причине значения даты и отметки времени правильно хранятся в БД, отображаются правильно при использовании инструмента sqlite3 командной строки, но при использовании ResultSet ...
Когда использование JDBC для SQLite по какой-то причине значения даты и отметки времени правильно хранятся в БД, правильно отображаются при использовании инструмента sqlite3 командной строки, но при использовании функций ResultSet для получения этих значений он не работает. Ниже представлен небольшой тестовый класс, демонстрирующий, что я имею в виду.
import java.sql.*;
public class Test {
public static void main(String[] args) throws Exception {
Class.forName("org.sqlite.JDBC");
Connection conn = DriverManager.getConnection("jdbc:sqlite:test.db");
Statement stat = conn.createStatement();
stat.executeUpdate("drop table if exists people;");
stat.executeUpdate("create table people (name, occupation, date date);");
stat.executeUpdate("insert into people values ('Turing', 'Computers', date('now'));");
ResultSet rs = stat.executeQuery("select * from people;");
while (rs.next()) {
System.out.println("name = " + rs.getString("name"));
System.out.println("job = " + rs.getString("occupation"));
System.out.println("date = " + rs.getDate("date"));
System.out.println("dateAsString = " + rs.getString("date"));
}
rs.close();
conn.close();
}
}
Я получаю следующий результат:
name = Turing
все возвращают неправильные значения При использовании JDBC для SQLite по какой-то причине значения даты и отметки времени правильно хранятся в БД, отображаются правильно при использовании инструмента sqlite3 командной строки, но при использовании ResultSet ...
Когда использование JDBC для SQLite по какой-то причине значения даты и отметки времени правильно хранятся в БД, правильно отображаются при использовании инструмента sqlite3 командной строки, но при использовании функций ResultSet для получения этих значений он не работает. Ниже представлен небольшой тестовый класс, демонстрирующий, что я имею в виду.
import java.sql.*;
public class Test {
public static void main(String[] args) throws Exception {
Class.forName("org.sqlite.JDBC");
Connection conn = DriverManager.getConnection("jdbc:sqlite:test.db");
Statement stat = conn.createStatement();
stat.executeUpdate("drop table if exists people;");
stat.executeUpdate("create table people (name, occupation, date date);");
stat.executeUpdate("insert into people values ('Turing', 'Computers', date('now'));");
ResultSet rs = stat.executeQuery("select * from people;");
while (rs.next()) {
System.out.println("name = " + rs.getString("name"));
System.out.println("job = " + rs.getString("occupation"));
System.out.println("date = " + rs.getDate("date"));
System.out.println("dateAsString = " + rs.getString("date"));
}
rs.close();
conn.close();
}
}
Я получаю следующий результат:
name = Turing
отображаются правильно при использовании инструмента sqlite3 командной строки, но при использовании функций ResultSet для получения этих значений он не работает. Ниже представлен небольшой тестовый класс, демонстрирующий, что я имею в виду.
import java.sql.*;
public class Test {
public static void main(String[] args) throws Exception {
Class.forName("org.sqlite.JDBC");
Connection conn = DriverManager.getConnection("jdbc:sqlite:test.db");
Statement stat = conn.createStatement();
stat.executeUpdate("drop table if exists people;");
stat.executeUpdate("create table people (name, occupation, date date);");
stat.executeUpdate("insert into people values ('Turing', 'Computers', date('now'));");
ResultSet rs = stat.executeQuery("select * from people;");
while (rs.next()) {
System.out.println("name = " + rs.getString("name"));
System.out.println("job = " + rs.getString("occupation"));
System.out.println("date = " + rs.getDate("date"));
System.out.println("dateAsString = " + rs.getString("date"));
}
rs.close();
conn.close();
}
}
Я получаю следующий результат:
name = Turing
отображаются правильно при использовании инструмента sqlite3 командной строки, но при использовании функций ResultSet для получения этих значений он не работает. Ниже представлен небольшой тестовый класс, демонстрирующий, что я имею в виду.
import java.sql.*;
public class Test {
public static void main(String[] args) throws Exception {
Class.forName("org.sqlite.JDBC");
Connection conn = DriverManager.getConnection("jdbc:sqlite:test.db");
Statement stat = conn.createStatement();
stat.executeUpdate("drop table if exists people;");
stat.executeUpdate("create table people (name, occupation, date date);");
stat.executeUpdate("insert into people values ('Turing', 'Computers', date('now'));");
ResultSet rs = stat.executeQuery("select * from people;");
while (rs.next()) {
System.out.println("name = " + rs.getString("name"));
System.out.println("job = " + rs.getString("occupation"));
System.out.println("date = " + rs.getDate("date"));
System.out.println("dateAsString = " + rs.getString("date"));
}
rs.close();
conn.close();
}
}
Я получаю следующий результат:
name = Turing
job = Компьютеры
дата = 01.01.1970
dateAsString = 2011-03-24