数据审计中日期时间数据源问题的处理
发布时间:2018-12-17 13:49:40作者:
在公积金、社保等审计项目中,需要利用SQL Server语句进行日期和时间信息比对,由于数据源往往存在格式不符、录入错误等问题,会导致软件报错,无法得到分析结果,需要对数据源先进行相应处理以符合软件对数据格式、范围等的要求。
一、更新数据
对于“2015-06”、“201403”、“110521”等“缺位日期数据”,可以用更新语句update补充完整,且补充的数据要满足分析的需要和尽量接近实际情况,例如:
update A set ksrq= rtrim (ltrim(ksrq))+'-01'
update B set jsrq='20'+ rtrim (ltrim(jsrq))
语句编制过程中需注意:
1.用rtrim、ltrim函数去除空格;
2.生成新表再进行数据更新操作,以保留原数据;
3.对“日”进行补充时,月初可统一补充为“01”,即均为1日,月末如不影响分析可统一补充为“28”,即28日,由于一般年份2月没有29-31号,均补充为30或31日所以会造成数据溢出,如无法满足分析需要,可将2月份的数据单独生成新表进行更新。
4.更新的数据一般为文本格式,需要使用cast函数转换为日期格式。
二、截取数据
对于“20090415123229”等由系统生成的数据,以及需要从身份证号中提取出生年月的情况,可用left、right函数截取数据,同样需要注意用rtrim、ltrim函数去除空格和用cast函数将数据转换为日期格式,例如:
select * from A
where cast(left(ltrim(czrq),8) as datetime)> '2017-7-1'
三、用isdate函数剔除无效日期
isdate函数的功能是确定表达式是否为有效日期或可转成有效日期,是返回1,不是返回0。很多时候即使将数据进行了上述处理,执行查询后仍然会报错,无法产生查询结果,这是因为数据源由于各种原因存在“20080231”、“20142205”等错误数据,此时需要用isdate函数保留“有效日期”进行比对,其余“无效日期”与被审计单位核实后再进行分析,例如:
select * from A
where isdate(right(left(ltrim(sfzh),14),8))=1
对数据源进行上述处理后,就可以进一步按照审计需要,编写语句,验证疑点。
Copyright © 2012-2023 广州天衡会计师事务所 All Rights Reserved. 粤ICP备2023073183号