繁体   English   中英

计算生日SQL DB2并指出错误数据

[英]Calculate date of birth SQL DB2 and indicate bad data

我正在尝试计算学生入学时的年龄。 我已经尝试过此查询,但是在某些情况下,我的录取日期早于其出生日期(错误数据)。

例如:

date of birth is 2016-10-22-00.00.00.000000 
admission date is 2016-09-09-14.51.00.000000 

我得到0,但是我应该得到带有负数(-)的东西,因此我可以看到这是错误的数据。 谢谢

SELECT * 
FROM   (SELECT student_id, 
               Timestampdiff(256, Char(Timestamp(admission_date) - 
                                       Timestamp(date_of_birth))) 
               AS Admission_DOB 
        FROM   person) AS a 
WHERE  admission_dob <= '10' 

您应该将其作为单独的问题解决。 一个用于计算年龄,另一个用于查找不良数据。

因此,发现不良数据应该更简单:

SELECT *, 'good data', age(start, end) as age
FROM  person
WHERE admission_date > date_of_birth

UNION ALL

SELECT *, 'bad data', null as age -- or age(end, start)
FROM  person
WHERE admission_date < date_of_birth
SELECT student_id, 
   CASE admission_date > date_of_birth THEN 
     Timestampdiff(256, Char(Timestamp(admission_date)-Timestamp(date_of_birth))) 

   ELSE 
      Timestampdiff(256, Char(Timestamp(date_of_birth)-Timestamp(admission_date))) 

           AS Admission_DOB 
    FROM   person
SELECT * 
FROM   (SELECT student_id,  
               CASE WHEN  ar.DT_ACCESS_RCVD <  p.DT_BRTH 
                    THEN '-9' 
                    ELSE  Timestampdiff(256, Char(Timestamp(admission_date) - 
                                                  Timestamp(date_of_birth))) 
               END AS Admission_DOB 
        FROM   person) AS a 
WHERE  admission_dob <= '10' 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM