使用日期和时间比较更新查询

时间:2016-02-24 14:07:11

标签: sql oracle

我有一个查询在某种情况下更新某些字段。

条件

  

时差不超过1小时,日期可以相同。

select brth_dt from Table where user_cd = 'HARSHIT';

select sysdate from dual;

select brth_dt from Table
where user_cd = 'HARSHIT' 
  and sysdate-(1/24) < BRTH_DT;

但是有一个条件也就是在晚上,用户试图在23:30更新,之后他在00:15尝试第二天所以差异是45分钟,但更新必须执行

<div class="row">
<div class="col-md-12">
    <p><a href="#credits" class="toggle btn btn-primary"><?php print $title; ?></a></p>

        <div id="credits1" class="wysiwyg hidden">
           Content - content
        </div>

</div>

以上查询的结果

BRTH_DT

25/02/2016 12:30:00

选择了1行。

SYSDATE

24/02/2016 16:7:58

选择了1行。

BRTH_DT

25/02/2016 12:30:00

选择了1行。

3 个答案:

答案 0 :(得分:0)

to_char(col_name, 'yyyy-mm-dd hh24:mi:ss')

只使用24小时格式,我认为应该做的工作。

答案 1 :(得分:0)

我认为没有理由将日期转换为字符串...如果您需要检查2个日期是否在一个小时之内,只需在日期进行数学计算,并进行比较:

select * from sir_people 
where user_cd = 'HARSHIT' 
  and BRTH_DT BETWEEN sysdate-(1/24)
                  AND sysdate;
为了进行比较,日期

to_char从根本上是有缺陷的逻辑,应该避免。

[edit]基于提供的示例:您似乎想要排除将来的日期,并且仅包括现在和一小时之间的那些日期。 查询已更新,以满足该额外要求。

答案 2 :(得分:0)

只需将所需条件转换为sql: “时差不超过1小时,日期可以相同。”

select *
  from Table
  where user_cd = 'HARSHIT'
        and abs(sysdate-brth_dt) <= 1/24