Java 从oracle每分钟插入和提取小时数

Java 从oracle每分钟插入和提取小时数,java,sql,Java,Sql,我在甲骨文公司工作 我想插入包含小时和分钟的数据 我有这样一个专栏:DATE\u ARCH 此列的类型为日期 我有一个java代码,它应该在这个列中插入日期 transfers.setDateArch(new java.sql.Date( System.currentTimeMillis())); 但是当我试图从日期中提取小时和分钟时 使用以下sql代码: select to_char(transfers.DATE_ARCH , 'HH:MM'

我在甲骨文公司工作

我想插入包含小时和分钟的数据

我有这样一个专栏:DATE\u ARCH

此列的类型为日期

我有一个java代码,它应该在这个列中插入日期

 transfers.setDateArch(new java.sql.Date(
                        System.currentTimeMillis()));
但是当我试图从日期中提取小时和分钟时

使用以下sql代码:

select to_char(transfers.DATE_ARCH , 'HH:MM') from transfers where id_transfer='TR-300'
我一直有这个价值观:

12:05

已更新

我尝试使用以下代码:

Timestamp t = new Timestamp(new Date().getTime());

                transfers.setDateArch(t);
select to_char(transfers.DATE_ARCH , 'HH24:MI') from transfers where id_transfer='TR-258'
我尝试使用以下代码提取小时和分钟:

Timestamp t = new Timestamp(new Date().getTime());

                transfers.setDateArch(t);
select to_char(transfers.DATE_ARCH , 'HH24:MI') from transfers where id_transfer='TR-258'
但我在所有情况下都有这个价值:

00:00

正如我已经说过的,DATE\u ARCH的类型是DATE

当我尝试使用sql时:

  UPDATE transfers SET DATE_ARCH = SYSDATE
我使用了正确的值

 select to_char(transfers.DATE_ARCH , 'HH24:MI') from transfers where id_transfer='TR-258'

现在我想知道如何使用java代码插入带有小时和分钟的日期,您是对的。我对Oracle的java接口了解不够,无法找到正确的解决方案。但是,您的解决方案是在没有时间的情况下插入日期。表达方式:

to_char(transfers.DATE_ARCH , 'HH:MM')
返回“12”是因为是午夜,返回“05”是因为是五月。分钟的正确表达式是:

to_char(transfers.DATE_ARCH , 'HH:MI')
对于24小时制:

to_char(transfers.DATE_ARCH , 'HH24:MI')

唉,我不知道如何修复java代码。但是也许有一种
DateTime
方法可以使用。

您想检索什么?您正在将值转换为仅包含小时和分钟的字符,因此您只获取小时和分钟应该不会感到惊讶。我在所有时间12:05中遇到的问题,我认为12:05是默认值,因为我尝试在不同的时间内保存,但在所有情况下都是12:05,如JavaDocs中所述:a
java.sql.Date
没有时间(它被设置为
0
)。您需要使用
java.sql.Timestamp
。并且
MM
返回月份,而不是分钟数(请参阅Oracle手册)。