2020-02-21T10:33:24+08:00 ,这种格式的日期怎么转换成 正常的日期格式2020-02-21 10:33:24?oracle的sql函数怎么写?
这样吧,先转为格林威治时间是 2020 年 2 月 21 日凌晨 2 点 33 分 24 秒,然后再加8小时
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;
正确:
--对日期型数据,格式是敏感的,使用日期型数据的格式是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';
结果:
将2020年2月21日10点33分24秒的日期格式2020-02-21T10:33:24+08:00转换成正常的日期格式2020-02-21 10:33:24,可以使用Oracle中的to_char和to_timestamp函数来完成。具体步骤如下:
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
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函数来实现该转换,可以按照以下步骤:
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;
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函数的实现方法。