【问题标题】:How to take yesterdays datetime in Oracle with specific time?如何以特定时间在 Oracle 中获取昨天的日期时间?
【发布时间】:2018-11-19 11:17:24
【问题描述】:

我需要取昨天的值,例如:

18-11-2018 06:00:00
select (systimestamp - 1) as ts_bytes from dual;

时间是固定的。

【问题讨论】:

标签: sql oracle timestamp


【解决方案1】:

我想你正在寻找这个:

select TRUNC(systimestamp - 1) + INTERVAL '6' HOUR as ts_bytes 
from dual;

TRUNC(systimestamp) - INTERVAL '18' HOUR

或者如果您更喜欢 DATE 值而不是 TIMESTAMP

select TRUNC(SYSDATE - 1) + 6/24 as ts_bytes 
from dual;

【讨论】:

    【解决方案2】:

    如果您想在昨天的午夜 (00:00:00) 进行时间,则将当前时间戳截断到今天的开始,然后减去一天:

    SELECT TRUNC(SYSTIMESTAMP) - INTERVAL '1' DAY as ts_bytes
    FROM   DUAL;
    

    如果您想要一个特定的 HH:MM:SS 时间,请添加一个包含该时间的间隔:

    SELECT TRUNC(SYSTIMESTAMP) - INTERVAL '1' DAY + INTERVAL '12:34:56' HOUR TO SECOND as ts_bytes
    FROM   DUAL;
    

    【讨论】:

      【解决方案3】:
      Select to_char(trunc(sysdate-1),’dd-mm-yyyy’)||’ 06:00:00’ as tyme from dual;
      

      这很有趣,但应该可以。

      【讨论】:

        【解决方案4】:
        SELECT  SYSTIMESTAMP - INTERVAL '1' DAY   AS yesterday
        FROM    dual;
        

        试试这个。

        【讨论】:

        • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-01-02
        • 1970-01-01
        • 2011-03-31
        • 1970-01-01
        • 1970-01-01
        • 2014-02-27
        • 1970-01-01
        相关资源
        最近更新 更多