Oracle数据库datetime类型字段转YYYY-MM-DD日期格式的正确语法是什么
Oracle日期格式化查询正确写法
过往写法报错原因
- 报错
ORA-00904: "DATE_FORMAT": invalid identifier:DATE_FORMAT是MySQL专属函数,Oracle无该内置函数,因此无法识别。 - 报错
ORA-00918: column ambiguously defined:一是函数使用错误,TO_DATE的作用是将字符串转为日期类型,将日期转指定格式字符串需用TO_CHAR;二是查询结果别名和原字段名完全重名,Oracle解析时无法区分引用对象,产生歧义。 - 报错
org.apache.avro.SchemaParseException: Illegal character:查询链路中包含Avro schema校验,不支持函数返回值的默认命名,必须为计算列指定合法别名。
正确SQL语法
场景1:目标字段本身是DATE/DATETIME类型
直接用TO_CHAR转换即可,示例:
SELECT TO_CHAR(你的日期字段名, 'YYYY-MM-DD') AS 合法别名 FROM 你的表名;
实际用例:
SELECT TO_CHAR(register_time, 'YYYY-MM-DD') AS register_date FROM user_info;
场景2:目标字段是存储日期的字符串类型
需要先按原存储格式转成日期,再转成目标格式字符串,匹配你给出的1/31/2006 22:00:00 AM格式的写法如下:
SELECT TO_CHAR(TO_DATE(你的字符串字段名, 'MM/DD/YYYY HH12:MI:SS AM'), 'YYYY-MM-DD') AS 合法别名 FROM 你的表名;
内容的提问来源于stack exchange,提问作者Mirel Khok
相关产品推荐
相关产品推荐

