繁体   English   中英

日期转换格式Java转DB不同格式

[英]Date conversion format Java to DB different format

我正在 java 中编写代码,该代码执行 Oracle 数据库程序当我运行数据库时,我必须在程序中放入的格式是 dd/MM/yyyy。 我必须从我的 java 代码中使用带有日期 yyyy-MM-dd 的 CallebleStatement setDate 发送此日期(这是 java 中的日期格式)当执行此 CallebleStatement 时,它会将我发送的日期转换为数据库格式,还是会写入 Java 格式?

编辑:基本上是这样的:

if(types[1].compareTo("DATE") == 0) {//procedureValues[i] = yyyy-MM-dd HH:mm:ss
    cs.setDate(i+1, Date.valueOf(procedureValues[i].trim()));
}else {
    cs.setObject(i+1, procedureValues[i].trim(), SQLTypes.valueOf(types[1]).getTypes());    
}

是的,程序需要 DATE 格式

在 Oracle 中, DATE是由 7 个字节(世纪、世纪、月、日、小时、分钟和秒)组成的二进制数据类型。 总是有这些组件,它从不存储格式。

执行此 CallebleStatement 时,它会将我发送的日期转换为数据库格式,还是写入 Java 格式?

如果您使用CallableStatement.setDate() ,它会将其转换为数据库所需的二进制值。 不会以(容易)人类可读的格式存储它。

如果您想查看数据库如何存储值,则可以使用:

SELECT DUMP(your_date_column) FROM your_table;

当您从数据库中读取值时,客户端应用程序(在本例中为 Java 通过数据库驱动程序)将从数据库中读取二进制值并将其转换为适合客户端应用程序的表示形式。

如果您在不同的客户端应用程序中读取它,那么二进制值将被转换为该客户端应用程序的适当表示; 因此两个不同的客户端应用程序(例如,Java 和 SQL/Plus)可能会以不同的格式显示相同的二进制日期值。

如果您使用的 Java 中的日期格式与数据库的日期格式不兼容,则该过程将失败,因为该过程采用dd/mm/yyyy字符串而不是日期实例。

您必须确保您的 Java 日期类型是正确的,或者将其转换为与 Oracle 日期类型dd/mm/yyyy匹配,然后将其用作过程中的参数。

一个简单的解决方案是在 Java 中使用字符串而不是日期类型,并将该字符串用作过程的参数,但这取决于您的输入和程序

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM