网站首页 > 技术文章 正文
技术栈|"0000-00-00"日期格式你是认真的么?浅谈日期类型数据质量问题
数据中心经常会接触到各类时间日期的数据,有时可能为DATE型、有时可能为VARCHAR型。而不管是什么格式类型的数据,在同步的时候会涉及到入库和格式转换。但你碰到过"0000-00-00"格式的数据么 ?
此类数据明显有问题,因为ORACLE是不会允许年份、日期、时间出现0的情况。而且如果通过ETL工具查询或抽取时都会报错,
既然ORACLE不允许存放"0000-00-00"这样的数据,那么此问题真实的原因是什么?
通过对比业务系统此数据的状态,我们终于知道了此日期是"5589-06-10"。此错误数据在前端程序往数据库中插入的时候发生了错误,导致数据库中出现了一条违背常识的"0000-00-00"。那么此问题真实的原因,是在于业务系统对于DATE格式的数据在录入的时候没有校验机制,造成数据库中存放了错误格式的数据,而此数据在涉及到查询、ETL等过程中必定会抛出一个ORA-01847的错误。
问题找到了,但是如何解决呢?一方面我们需要联系业务系统厂商解决前端程序对日期格式数据的校验问题,一方面还可以在数据同步时,通过"邪道"解决。
例如利用CASE WHEN函数做一个简单的判断,把所有含"0000"的数据,统一定义为"0001-01-01"这样一个"貌似"正确的数据,其他格式正确的数据正常输出。这样既保证了数据同步的及时性,也方便后期针对问题数据进行集中处理。
在ETL过程中,我们会碰到各种各样的"奇葩"问题,但只要认真、细致,问题还是可以解决。"搞数据",我们是认真的!
猜你喜欢
- 2025-09-04 科莱特SAP ABAP干货 | 基础篇:二、数据字典(1)
- 2024-11-10 Oracle根据身份证号码获取年龄的函数
- 2024-11-10 Oracle发布了Java SE支持路线图,Java 8 支持到2030年
- 2024-11-10 oracle中to_date和to_char的区别,尤其日期区间的统计别用错
- 2024-11-10 常用SQL系列之(八):列值累计、占比、平均值以及日期运算等
- 2024-11-10 oracle,db2取上年末,上月末,上年同期
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- oracle面试 (55)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)