Java 如何以yyyy-MM-dd HH:MM:ss格式从oracle数据库检索日期变量,并以相同格式存储在日期变量中?

Java 如何以yyyy-MM-dd HH:MM:ss格式从oracle数据库检索日期变量,并以相同格式存储在日期变量中?,java,date,Java,Date,我想从oracle数据库中检索Date对象,并以相同的格式将其存储在Java中的Date变量中 聚苯乙烯;变量的数据类型应仅为日期,但需要具有格式yyyy MM dd HH:MM:ss。Date类将在内部将日期存储为长整数。如果要将其转换为字符串,可以使用DateFormat DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateFormatted = df.format(new Date()); Date

我想从oracle数据库中检索Date对象,并以相同的格式将其存储在Java中的Date变量中


聚苯乙烯;变量的数据类型应仅为日期,但需要具有格式yyyy MM dd HH:MM:ss。

Date
类将在内部将日期存储为长整数。如果要将其转换为字符串,可以使用
DateFormat

DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateFormatted = df.format(new Date());
Date date = df.parse(dateFormatted);

Date
类将在内部将日期存储为长整数。如果要将其转换为字符串,可以使用
DateFormat

DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateFormatted = df.format(new Date());
Date date = df.parse(dateFormatted);

如果数据库设置正确,您应该能够简单地将日期列检索到日期变量中。格式化注意事项在数据库访问级别不适用;它们应该不是问题

格式化是为了向用户显示日期而执行的操作

格式化也是各种工具用来向您显示数据库内容或日期对象内容的功能,因此这可能会引起一些混淆,因为这可能会使您认为日期列具有特定格式,或者日期变量具有特定格式。但他们没有

当在数据库级别出错时,问题就开始了。如果数据库列实际上不是时态数据类型,而是
CHAR
类型,那么格式化当然起作用。但我们不是在讨论“从oracle数据库中检索日期对象”,而是从数据库中检索字符串并将其转换为日期。但是,您没有告诉我们您的桌子的结构,因此我们无法对此进行推测


因此,根据您提供的信息,正确的答案是“只需将日期列提取到日期变量中”。如果您需要其他答案,请提供更多信息。

如果数据库设置正确,您应该能够简单地将日期列检索到日期变量中。格式化注意事项在数据库访问级别不适用;它们应该不是问题

格式化是为了向用户显示日期而执行的操作

格式化也是各种工具用来向您显示数据库内容或日期对象内容的功能,因此这可能会引起一些混淆,因为这可能会使您认为日期列具有特定格式,或者日期变量具有特定格式。但他们没有

当在数据库级别出错时,问题就开始了。如果数据库列实际上不是时态数据类型,而是
CHAR
类型,那么格式化当然起作用。但我们不是在讨论“从oracle数据库中检索日期对象”,而是从数据库中检索字符串并将其转换为日期。但是,您没有告诉我们您的桌子的结构,因此我们无法对此进行推测


因此,根据您提供的信息,正确的答案是“只需将日期列提取到日期变量中”。如果需要其他答案,请提供更多信息。

根据注释,您可能需要创建一个
CustomDate
类,以指定格式打印值:

public class CustomDate extends Date{
    private static final DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    @Override
    public String toString() {
        return df.format(this);
    }

}

尝试使用CustomDate,而不是创建Date的实例。它在您的代码中是等效的。

根据注释,您可能需要创建一个
CustomDate
类,以指定格式打印值:

public class CustomDate extends Date{
    private static final DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    @Override
    public String toString() {
        return df.format(this);
    }

}

尝试使用CustomDate,而不是创建Date的实例。它在您的代码中是等效的。

您刚刚给出了需求。考虑在已经尝试过的代码中添加一些代码,描述您的问题,以及一个问题。如果数据库中的数据类型不包含HH:MM:SS,那么它将默认为上午12点,如果您检索该值并使用java中的Date类将其转换为您的格式,您将得到此结果。
Date
没有格式-自1970年1月1日UTC起仅为毫秒数。您刚刚给出了要求。考虑在已经尝试过的代码中添加一些代码,描述您的问题,以及一个问题。如果数据库中的数据类型不包含HH:MM:SS,那么它将默认为上午12点,如果您检索该值并使用java中的Date类将其转换为您的格式,您将得到此结果。
Date
没有格式-自1970年1月1日UTC以来只有毫秒数。我必须保留数据类型“Date”以yyyy-MM-dd HH:MM:ss格式存储日期时。您能发布一些您尝试的示例代码吗?我不熟悉OracleDB,但应该与MySQL没有太大区别,应该存在一个日期类型来存储日期,而不是使用字符串。在任何情况下,我认为您应该能够使用我提供的代码将t转换为
String
,以将其发送到DB驱动程序。此外,如果您使用Hibernate或Eclipselink,则会有所不同……在上面的示例中,它将以2017年5月4日12:44:18 CEST格式给出输出。但是,在打印日期变量时,我需要yyyy-MM-dd HH:MM:ss格式。除非覆盖
Date
toString()
方法,否则无法实现这一点。如果从我的示例中打印
dateFormatted
,您将看到正确的值。在以yyyy-MM-dd HH:MM:ss格式存储日期时,我必须保留数据类型“Date”。您可以发布一些您尝试的示例代码吗?我不熟悉OracleDB,但应该与MySQL没有太大区别,应该存在一个日期类型来存储日期,而不是使用字符串。在任何情况下,我认为您应该能够使用我提供的代码将t转换为
String
,以将其发送到DB驱动程序。而且,如果你使用