繁体   English   中英

如何在查询中转换时间并添加时区 - 无法识别日期格式

[英]How convert time in query and add time zone - date format not recognized

我需要将时区添加到 Oracle SQL 查询返回的内容中。

SELECT
    mw.appdate APPDATE
FROM
    mwo mw

这将返回:

APPDATE
23-SEP-2021 00:00:00

我正在查看ISO-8601 select to_char ,但我不确定如何将其应用于我的查询结果。

SELECT
to_char(mw.appdate, 'YYYY-MM-DD"T"hh24:mi:sstzh:tze') APPDATE,
FROM
mwo mw

error:
ORA-01821: date format not recognized
01821. 00000 -  "date format not recognized"
*Cause:    
*Action:

我不太熟悉格式化日期。 我如何格式化它以添加时区(东部标准时间)。

我试过

SELECT
    to_char(mw.appdate, 'YYYY-MM-DD"T"hh24:mi:sstzh:est')   APPDATE
    FROM
    mwo mw

并返回此错误:

ORA-01821: date format not recognized
01821. 00000 -  "date format not recognized"
*Cause:    
*Action:

我试过

mw.appdate, 'YYYY-MM-DD"T"hh24:mi:sstzh:est'   APPDATE

它添加了一个名为 APPDATE_1 的列,其中确实包含以下字符串: YYYY-MM-DD"T"hh24:mi:sstzh:est

更新:我想让查询返回重新格式化的日期。 我无法重新插入数据库。 我正在尝试像下面的答案一样,但它仍然出错。

SELECT
   mw.account ACCT,
   mw.wono WO,
   to_char(mw.appdate, 'YYYY-MM-DD"T"HH24:MI:SSTZH:TZM') AS   APPDATE
         
FROM
   mwo mw

错误:

ORA-01821: date format not recognized
01821. 00000 -  "date format not recognized"
*Cause:    
*Action:

假设您的列是TIMESTAMP WITH TIME ZONE数据类型并且已经处于东部标准时间,那么您需要格式 model TZM (不是TZE ):

SELECT TO_CHAR(
          appdate,
          'YYYY-MM-DD"T"HH24:MI:SSTZH:TZM'
        ) AS APPDATE
FROM    mwo;

然后对于示例数据:

CREATE TABLE mwo (appdate TIMESTAMP WITH TIME ZONE);

INSERT INTO mwo(appdate) VALUES (TIMESTAMP '2021-09-28 01:23:45.123456789 EST');

output 是:

申请日期
2021-09-28T01:23:45-05:00

db<> 在这里摆弄

您需要将DATE转换为TIMESTAMP ,然后您可以附加时区,最后您可以格式化 output:

SELECT
   to_char(
      FROM_TZ(CAST(mw.appdate AS TIMESTAMP), 'EST5EDT'), 
      'YYYY-MM-DD"T"hh24:mi:sstzh:tzm'
      ) AS APPDATE
FROM mw

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM