【问题标题】:How to get min date using oracle database date table如何使用 oracle 数据库日期表获取最小日期
【发布时间】:2013-09-13 17:02:42
【问题描述】:

这是我的 sql 查询

select e.event_name,
    min(dt.start_date) as start_date,
    min(dt.start_date)||'-'||max(dt.end_date) as FromTo
from event e join
    date_table dt
on e.e_id = dt.e_id
group by e.event_name;

我想收到即将到来的活动。为此,我使用MAX(dt.end_date)>=sysdate 然后我得到了即将到来的事件。但我的问题是,当今天、明天和后天发生事件时,我将开始日期显示为“今天”(最小开始日期)。 但是当明天到来时,我仍然将开始日期显示为上一个日期。因为最小开始日期是昨天。我想将明天的日期显示为开始日期。

我应该如何更改我的代码?

【问题讨论】:

  • @user2763589 whrew 是你的代码..?

标签: sql database oracle select oracle10g


【解决方案1】:

只需添加一个 where 子句。

select e.event_name,
    min(dt.start_date) as start_date,
    min(dt.start_date)||'-'||max(dt.end_date) as FromTo
from event e join
    date_table dt
on e.e_id = dt.e_id
where dt.start_date >=sysdate
group by e.event_name;

【讨论】:

    【解决方案2】:

    我不确定你为什么在这里使用 min/max。

    如果您想查看接下来的 10 场活动(从今天开始),您可能想尝试这样的事情:

    select * 
    from (
        select  e.* , dt.start_date , dt.end_date
        from    event e , date_table dt 
        where   e.e_id = dt.e_id 
        and dt.start_date > sysdate 
        order by dt.start_date)
    where rownum < 10
    

    【讨论】:

    • 是的,我可以使用此查询获取即将发生的事件。但我的问题是,例如,当事件发生在 10、12、20 和 25 时。假设今天是 10。所以今天我想显示 10。明天我想显示 12。当 12 小于当前日期时,这意味着它是过去的日期,然后我想显示 20 等等.. 你能帮我..
    • 我找到了答案。 select m.E_VENUE,m.E_NAME,min(d.D_START_DATE) min_st_dt,m.E_ID from event m,date_table d where d.E_ID in( select distinct d.E_ID from date_table d where d.D_END_DATE>trunc(sysdate)) and d.D_END_DATE>trunc(sysdate) and m.e_id = d.e_id group by m.E_ID,m.E_NAME,m.E_VENUE ORDER BY min_st_dt;
    猜你喜欢
    • 2018-03-12
    • 2016-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-27
    • 1970-01-01
    • 2022-10-13
    • 1970-01-01
    相关资源
    最近更新 更多