gpt4 book ai didi

SQLite JDBC rs.getDate() getTimestamp() 等都返回错误值

转载 作者:IT王子 更新时间:2023-10-29 06:25:09 27 4
gpt4 key购买 nike

当出于某种原因将 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();
}
}

我得到的输出是:

名字=图灵
工作=计算机
日期 = 1970-01-01
dateAsString = 2011-03-24

最佳答案

正如 Scott 所说:SQLite 没有 Date 类型。

您可以让 SQLite 使用 strftime 为您进行转换函数:strftime('%s', date)。然后您可以在 Java 端使用 rs.getDate

您还可以将 SQLite 日期检索为字符串,并将其解析为日期:

DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try {
Date today = df.parse(rs.getString("date"));
System.out.println("Today = " + df.format(today));
} catch (ParseException e) {
e.printStackTrace();
}

关于SQLite JDBC rs.getDate() getTimestamp() 等都返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5425557/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com