【问题标题】:Oracle SQL Date doesn't show time? How to show time between two dates?Oracle SQL 日期不显示时间?如何显示两个日期之间的时间?
【发布时间】:2016-07-29 10:10:41
【问题描述】:

我想计算两个日期之间的时间,以显示促销还剩多少时间。但是,当我显示日期时,它只显示日期而不显示时间(尽管我使用 dd/mm/yyyy hh24:mi:ss 插入了日期)。

SELECT date
FROM Sale

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

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

基本上,我只想显示距离销售结束还剩多少小时、分钟、秒。所以 dateEnd 减去 dateStart ... 我该怎么办?

谢谢!

【问题讨论】:

  • 为什么删除了 SQL 标签 :o
  • 你试过搜索吗?这个问题似乎与(除其他外)this 重复

标签: oracle date time


【解决方案1】:

日期没有格式 - 它们是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;

【讨论】:

  • 酷我不知道,但是我要如何计算两个日期时间之间的时间差? TODATE(TO_CHAR)?
  • @SJacobs 参见 dcieslak 的 answerthis questionthis question
【解决方案2】:
   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 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-12
    • 2020-05-01
    • 1970-01-01
    • 2019-12-02
    • 2011-10-30
    • 2018-02-20
    • 1970-01-01
    相关资源
    最近更新 更多