adb中我有个字符串字段(日期时间), 类似2021-01-01 13:32:31, 如何转成dateime, 异常格式赋null, date函数会报错, str_to_date(a, '%H-%i-%s %H:%m-%s)好像都报异常?
使用STR_TO_DATE()函数将异常格式的字符串转换为日期时,如果无法解析该字符串,则会将其转换为NULL。确认输入的字符串是否符合指定的日期格式,否则可能会导致转换失败并得到NULL值。,此回答整理自钉群“云数据仓库ADB-开发者群”
可以使用STR_TO_DATE函数将字符串转换为日期时间格式,STR_TO_DATE函数的使用方式是:STR_TO_DATE(str, format)。
在上述问题中,日期时间字符串的格式为'2021-01-01 13:32:31',因此需要使用 '%Y-%m-%d %H:%i:%s' 的格式参数。示例如下:
SELECT STR_TO_DATE('2021-01-01 13:32:31', '%Y-%m-%d %H:%i:%s');
该语句将返回 '2021-01-01 13:32:31' 的日期时间类型。
如果日期时间字符串的格式不符合所指定的格式参数,则会返回NULL值。例如,如果日期时间字符串的格式为 '2021-01-01 13:32',则需要将 '%s' 替换为 '%i':
SELECT STR_TO_DATE('2021-01-01 13:32', '%Y-%m-%d %H:%i:%s');
该语句将返回NULL值。
如果您希望在转换时忽略字符串中的格式错误,可以使用 'STRICT_ALL_TABLES' 模式来禁用严格模式,在此模式下,转换过程中遇到格式错误将返回NULL值。实例如下:
SET sql_mode = 'STRICT_ALL_TABLES';
SELECT STR_TO_DATE('2021-01-01 13:32:31', '%Y-%m-%d %H:%m:%s');
该语句将返回NULL值。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云自主研发的云原生数据仓库,具有高并发读写、低峰谷读写、弹性扩展、安全可靠等特性,可支持PB级别数据存储,可广泛应用于BI、机器学习、实时分析、数据挖掘等场景。包含AnalyticDB MySQL版、AnalyticDB PostgreSQL 版。