Oracle SQL Date没有显示时间?如何显示两个日期之间的时间?

时间:2016-04-08 08:10:45

标签: oracle date time

我想计算两个日期之间的时间,以显示销售剩余的时间。但是当我显示日期时,它只显示日期而不是时间(虽然我用dd / mm / yyyy hh24:mi:ss插入日期)。

SELECT date
FROM Sale

这是Sale实体。 (留下不相关的属性)

CREATE TABLE Sale
(
    dateStart           DATE NOT NULL,
    dateEnd             DATE NOT NULL
);

基本上,我只想显示销售结束前的小时,分​​钟,秒。所以dateEnd减去dateStart ... 我该怎么做呢?

谢谢!

2 个答案:

答案 0 :(得分:2)

日期没有格式 - 它们是represented internally by 7 or 8 bytes

SQL客户端格式化日期,默认情况下,SQL plus将使用NLS_DATE_FORMAT会话参数(这是一个客户端变量,而不是全局设置的变量)。

如果您想要一致格式化的日期,则需要将其转换为字符串

SELECT TO_CHAR( datestart, 'dd/mm/yyyy hh24:mi:ss` )
FROM   sale;

答案 1 :(得分:0)

   with dates as
   ( select  to_date('20160401 11:21','yyyymmdd hh24:mi') as date1, 
             to_date('20160327 10:13','yyyymmdd hh24:mi') as date2 
     from dual )
   SELECT floor((date1-date2)*24)
          || ' Hours ' ||
           mod(floor((date1-date2)*24*60),60)
           || ' Minutes ' ||
           mod(floor((date1-date2)*24*60*60),60)
          || ' Secs ' time_difference
     FROM dates;

将产生:

    time_difference
   -------------
    121 Hours 7 Minutes 59 Secs