【问题标题】:ORACLE EST GMT date issueORACLE EST GMT 日期问题
【发布时间】:2015-08-11 12:27:17
【问题描述】:

我需要按日期分组的库存计数。我使用了以下查询。我的问题是找到数据的应用程序是 EST 并且数据库在 GMT 时区运行。因此,当我在应用程序中选择特定日期时,它需要获取相应的 GMT 日期并获取其计数。目前我使用的查询是

SELECT tble.dte, COUNT(DISTINCT INVENTORY_ID)As cmt 
  FROM ATL_GROUNDING_INFO groundinginfo 
       right join (SELECT 
                   TO_DATE('03/11/2015 04:00:00','MM/DD/YYYY HH24:MI:SS') - 1 + rownum dte 
                     FROM DUAL 
                  CONNECT BY ROWNUM < 366 
                      AND 
         TO_DATE('03/11/2015 04:00:00','MM/DD/YYYY HH24:MI:SS') - 1 + rownum <= 
                         TO_DATE('04/02/2015 03:59:59','MM/DD/YYYY HH24:MI:SS')
                  ) tble 
              ON tble.dte = (groundinginfo.DATE_TURNED_IN) 
 group by tble.dte
 order by tble.dte desc`

但在这种情况下,计数不正确,因为 EST 3 月 11 日 = 3 月 11 日 04:00:00 AM 到 3 月 12 日 03:59:59 GMT。所以当我搜索 3 月 11 日时,我需要从 DB 获取上述日期范围之间的数据。请帮忙

【问题讨论】:

  • 格式化你的代码会让它更容易阅读。您是否将数据存储在 date 列中? timestamp with time zone 列?还是别的什么?
  • DATE_TURNED_IN 是日期 DATATYPE IN DB
  • 好的。你真的想把它转换成 EST 吗?还是美国/东部(可能是 EST 或 EDT)?
  • 这个查询的输入,即(to_date(?)) 是 EST。我想要它对应的 GMT 日期,然后指望那个日期。
  • 好的。那么date_turned_in 总是 EST?它从来不是 EDT?

标签: oracle date


【解决方案1】:

假设EST 是您的SESSIONTIMEZONE,您可以这样做:

WITH t AS
    (SELECT TIMESTAMP '2015-04-02 04:00:00' + ROWNUM * INTERVAL '1' DAY AS DT
    FROM dual
    CONNECT BY TIMESTAMP '2015-04-02 04:00:00' + ROWNUM * INTERVAL '1' DAY <= TIMESTAMP '2015-11-03 04:00:00')
SELECT tble.dte, COUNT(DISTINCT INVENTORY_ID)As cmt 
FROM ATL_GROUNDING_INFO groundinginfo 
   right join t ON FROM_TZ(CAST(dte AS TIMESTAMP), 'UTC') = DT

或更明确地说:

WITH t AS
    (SELECT TIMESTAMP '2015-04-02 04:00:00 EST' + ROWNUM * INTERVAL '1' DAY AS DT
    FROM dual
    CONNECT BY TIMESTAMP '2015-04-02 04:00:00 EST' + ROWNUM * INTERVAL '1' DAY <= TIMESTAMP '2015-11-03 04:00:00 EST')
SELECT tble.dte, COUNT(DISTINCT INVENTORY_ID)As cmt 
FROM ATL_GROUNDING_INFO groundinginfo 
   right join t ON FROM_TZ(CAST(dte AS TIMESTAMP), 'UTC') = DT

【讨论】:

  • 得到错误不是单组组函数
  • 明显忘记了group by子句
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-03
  • 1970-01-01
  • 1970-01-01
  • 2016-01-25
  • 1970-01-01
相关资源
最近更新 更多