这种格式的日期怎么转换成 正常的日期格式2020-02-21 10:33:24

2020-02-21T10:33:24+08:00 ,这种格式的日期怎么转换成 正常的日期格式2020-02-21 10:33:24?oracle的sql函数怎么写?

这样吧,先转为格林威治时间是 2020 年 2 月 21 日凌晨 2 点 33 分 24 秒,然后再加8小时

img

   SELECT to_date( TO_CHAR(TO_TIMESTAMP_TZ('2020-02-21T10:33:24+08:00',
                                  'YYYY-MM-DD"T"HH24:MI:SSTZH:TZM') AT TIME ZONE
                  'UTC',
                  'YYYY-MM-DD HH24:MI:SS'),'YYYY-MM-DD HH24:MI:SS')+INTERVAL '8' HOUR
     FROM dual;

SELECT TO_CHAR(TO_TIMESTAMP('2020-02-21T10:33:24+08:00', 'YYYY-MM-DD"T"HH24:MI:SS"TZH:TZM"'), 'YYYY-MM-DD HH24:MI:SS') AS DATE_STR FROM DUAL;

TO_TIMESTAMP函数将字符串转换为TIMESTAMP类型,第二个参数'YYYY-MM-DD"T"HH24:MI:SS"TZH:TZM"'中的双引号需要用单引号括起来以区分。然后再使用TO_CHAR函数将TIMESTAMP类型转换为字符串,第二个参数'YYYY-MM-DD HH24:MI:SS'即为目标转换格式。

上述代码会输出以下内容:

DATE_STR
-------------------
2020-02-21 10:33:24

该回答引用chatgpt:仅供参考,有问题@我


SELECT TO_CHAR(your_date_column, 'YYYY-MM-DD HH24:MI:SS') AS formatted_date
FROM your_table;

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/161127
  • 除此之外, 这篇博客: Oracle简单SQL语句(详细!!!)中的 案例三:日期型数据 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 正确:

    --对日期型数据,格式是敏感的,使用日期型数据的格式是DD-MM-YYY(日-月-年)
    SELECT * 
    FROM A_CHENS
    WHERE BIRTHDAY='20-7月-2001';
    

    结果:
    在这里插入图片描述

    错误一: 输入日期型格式不对

    --对日期型数据,格式是敏感的,使用日期型数据的格式是DD-MM-YYY(日-月-年)
    SELECT * 
    FROM A_CHENS
    WHERE BIRTHDAY='2001-7-20';
    

    结果:
    在这里插入图片描述

    错误二: 由于系统设置中文的编码格式,缺少“月”字

    --对日期型数据,格式是敏感的,使用日期型数据的格式是DD-MM-YYY(日-月-年)
    SELECT * 
    FROM A_CHENS
    WHERE BIRTHDAY='20-7-2001';
    

    结果:
    在这里插入图片描述

  • 您还可以看一下 刘建老师的Oracle数据库SQL语言课程中的 日期函数.小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    将2020年2月21日10点33分24秒的日期格式2020-02-21T10:33:24+08:00转换成正常的日期格式2020-02-21 10:33:24,可以使用Oracle中的to_char和to_timestamp函数来完成。具体步骤如下:

    1. 使用to_timestamp函数将字符串转换成时间戳类型,同时指定输入字符串的格式,其中"+08:00"是时区偏移量的表示方式:

    select to_timestamp('2020-02-21T10:33:24+08:00', 'YYYY-MM-DD"T"HH24:MI:SS"+08:00"') from dual; -- 输出结果:2020-02-21 10:33:24.000000000 +08:00

    1. 使用to_char函数将时间戳转换成需要的字符串格式,同样需要指定输出格式:

    select to_char(to_timestamp('2020-02-21T10:33:24+08:00', 'YYYY-MM-DD"T"HH24:MI:SS"+08:00"'), 'YYYY-MM-DD HH24:MI:SS') from dual; -- 输出结果:2020-02-21 10:33:24

    如果需要在Oracle中编写一个SQL函数来实现该转换,可以按照以下步骤:

    1. 使用create or replace语句创建一个新的函数,指定参数和返回值类型,同时定义一个变量用于存储时间戳:

    create or replace function convert_to_normal_date(input_str in varchar2) return varchar2 is v_timestamp timestamp; begin v_timestamp := to_timestamp(input_str, 'YYYY-MM-DD"T"HH24:MI:SS"+08:00"'); return to_char(v_timestamp, 'YYYY-MM-DD HH24:MI:SS'); end;

    1. 使用select语句测试该函数的运行结果:

    select convert_to_normal_date('2020-02-21T10:33:24+08:00') from dual; -- 输出结果:2020-02-21 10:33:24

    以上是将2020年2月21日10点33分24秒的日期格式转换成正常的日期格式的步骤和Oracle SQL函数的实现方法。