gpt4 book ai didi

java - Oracle 类型 DATE

转载 作者:行者123 更新时间:2023-12-01 18:45:21 24 4
gpt4 key购买 nike

我在数据库表中有字段类型 DATE

我需要按日期范围选择信息:

select  to_char(log_hour, ' DD/MM/YY HH24')  from  log_hourly_page page_counts where to_char(log_hour, 'DD/MM/YY') = '25/06/13'  order by log_hour desc; 

我得到了正确的结果(每小时有很多记录)

 25/06/13 23
25/06/13 23
25/06/13 23
25/06/13 22

...........

25/06/13 04
25/06/13 04
25/06/13 00
25/06/13 00

但是当我运行时

select  to_char(log_hour, ' DD/MM/YY HH24')  from  log_hourly_page page_counts where log_hour = '25-Jun-2013'  order by log_hour desc;

我的时间总是 0,

 25/06/13 00
25/06/13 00
25/06/13 00
25/06/13 00
.............
25/06/13 00
25/06/13 00
25/06/13 00

为什么第二个查询会这样工作?我测试了这个查询,因为我将 Java.util.Date 对象作为日期传递,并且它返回错误的数据,始终是 00 小时。

最佳答案

Oracle 中以这种方式指定的日期有一个时间组件:

'25-Jun-2013'

时间部分为 0(午夜),小时为 0,因此您只会获得该特定时间点的匹配项,而不是全天的匹配项。

要获取全天的范围,请使用您已有的:

where to_char(log_hour, 'DD/MM/YY') = '25/06/13'

或使用范围:

where log_hour >= '25/06/13' and log_hour < '26/06/13'

编辑

现在我可以看到您的实际 Java 代码:

query.setDate("date", date);

它传递一个没有时间部分的 SQL DATE。

您想使用setTimestamp ,它将 SQL TIMESTAMP 传递到数据库,该数据库具有时间组件和日期组件。

query.setTimestamp("date", timestamp);

关于java - Oracle 类型 DATE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17979971/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com