1

我已经搜索了很长时间,但找不到答案。我的问题很简单...

如何使用 java 在日期格式的 sql 数据库中插入今天的日期?这是代码。(时间和日期现在为空,我如何让他们得到现在的时间和今天的日期)

    String timeNow = null;
    DateFormat dateNow = null;       

    String sql = "INSERT INTO fys.`luggage` (customer_id, description, location, date, time, is_lost, is_handled) VALUES ('"
            + customerId + "', '" + description + "', '" + location + "', '" 
            + dateNow + "', '" + timeNow + "', '" + isLost 
            + "', '" + isHandled + "')";
    db.insertQuery(sql);
}
4

2 回答 2

2

日期是日期,而不是字符串

您似乎想要为您的日期时间制作一个字符串。不必要。JDBC 知道 Java 数据类型java.sql.Date ,它是java.util.Date的一个瘦包装器。

请参阅另一个问题中的示例,Java 中的日期时间此 java2s.com 教程

乔达时间

顺便说一句,如果使用Joda-Time,您可以轻松地在 org.joda.time.DateTime 和 java.util.Date 之间进行转换。调用DateTime类的toDate()方法。

Java 8 中的 JSR 310

未来,Java 8 包括一组由 JSR 310 定义的新 java.time.* 类:日期和时间 API,以取代臭名昭著的 java.util.Date/Calendar 类。这些课程受到 Joda-Time 的启发,但完全重新设计。

ISO 8601 字符串格式

如果您真的想将日期时间作为字符串传递,请使用数据库识别的格式。例如,Postgres 接受ISO 8601格式和其他格式。请参阅Postgres 文档中日期/时间类型页面的“日期/时间输入”部分。

让服务器设置日期时间

通常,让数据库引擎插入日期时间而不是使用您的编程语言是一个更好的主意。大多数数据库系统都有各种函数,您可以调用它们来生成当前日期时间。SQL 标准指定了一些这样的功能,但通常数据库系统还提供各种其他功能。

例如,Postgres 9提供了几种获取当前日期时间的方法。

一定要研究文档。例如,在 Postgres 中,您可以选择获取事务开始时刻的日期时间,或者您可以获取执行日期时间函数的时刻(晚于事务开始)。当您在多个记录中记录该时间并希望它们都匹配相同的时间值时,事务开始时间很有用。

于 2013-11-12T23:29:46.067 回答
1

No need for your variable. Even tough initializing a Date (with time) to now is just creating a default one. new Date();

Use SYSDATE directly. No need to use 2 column either. Because DATE actually holds the time also.

String sql = "INSERT INTO fys.`luggage` (customer_id, description, location, date_time, is_lost, is_handled) VALUES ('"
            + customerId + "', '" + description + "', '" + location + "', SYSDATE, '" + isLost 
            + "', '" + isHandled + "')";
于 2013-11-12T22:54:35.860 回答