Jpa 从Oracle DB(dd/mm/yyyy hh/mm/ss)获取完整日期信息时出现问题

Jpa 从Oracle DB(dd/mm/yyyy hh/mm/ss)获取完整日期信息时出现问题,jpa,oracle11g,Jpa,Oracle11g,我在一个表中有一列,我们在其中以DATETIME格式存储日期。(DD-MON-RRRR HH24:MI:SS)-数据库Oracle 11g。 列的数据类型为日期,并以01-01-2012 01:00 PM(即2012年1月1日)格式存储日期 实体 @NotNull @Column(name = "dateColumnName") @Temporal(TemporalType.TIMESTAMP) private Date sampleDate; 我正在通过传递日期获取所有数据 SAMPLE_Q

我在一个表中有一列,我们在其中以DATETIME格式存储日期。(DD-MON-RRRR HH24:MI:SS)-数据库Oracle 11g。 列的数据类型为日期,并以01-01-2012 01:00 PM(即2012年1月1日)格式存储日期

实体

@NotNull
@Column(name = "dateColumnName")
@Temporal(TemporalType.TIMESTAMP)
private Date sampleDate;
我正在通过传递日期获取所有数据

SAMPLE_QUERY = "select * from TableA tab where tab.dateWithTime = :sampleDate order by tab.dateWithTime ASC " 
singleDate为“2012年1月24日星期二00:00:00 IST”,快捷时间: 1327343400000

问题是我在查询中只传递了日期,尽管获取记录的日期是日期时间格式,即01-01-2012 01:00 PM


如何更改查询,使其以日期时间的升序获取所有记录

Oracle没有日期时间数据类型。
DATE
数据类型包含日期和时间组件,一直到第二个<代码>时间戳变得有点复杂

如果您的
dateWithTime
列确实是日期数据类型,则
orderbydatewithtime ASC
子句应按升序排列结果

您可能没有显示日期的时间部分。您可以使用
to_CHAR(dateWithTime,'dd/mm/yyyy hh24/mm/ss')
或任何您想要的格式将日期转换为该格式的字符串

编辑:

哦,你是说你想找出
date
的日期部分匹配的情况,但你不关心时间部分?可以在where子句中使用以下内容处理:

WHERE TRUNC( tab.dateWithTime ) = TRUNC( :sampledate )

默认情况下,TRUNC会将日期截短到一天的开始。

如果要获取该天的所有时间,请将查询更改为更像

SELECT ... WHERE dateField >= :lowerParam AND dateField < :upperParam
选择。。。其中dateField>=:lowerParam和dateField<:upperParam

Date列使用默认时间i(e 01-01-2012 01:00 PM)存储日期值,但我只传递带有一些默认时间的日期。我想在ASC中获取该日期的所有记录。01-01-2012 01:00 AM,01-01-2012 03:00 AM,01-01-2012 01:00 PM,01-01-2012 02:00 PM
DATE
s没有“默认时间”。我不知道你的意思。