使用SQL语句验证DOB(出生日期)列和年龄列是否正确

使用SQL语句验证DOB(出生日期)列和年龄列是否正确,sql,database,db2,dob,Sql,Database,Db2,Dob,我被卡住了,需要帮助在同一个表中验证带有年龄的特殊DOB格式,在该表中,根据带有年龄的验证,它只返回不正确的DOB 试图在其他线程中找到,但似乎更倾向于JavaScript和编程方面。请帮助我获取预期输出的SQL语句是什么: 表:客户 Column 1: NUM Column 2: DOB Column 3: AGE 全国矿工联盟 出生日期 年龄 1. 851201888888 36 2. 701128999999 51 3. 910303777777 50 4. 95020255555

我被卡住了,需要帮助在同一个表中验证带有年龄的特殊DOB格式,在该表中,根据带有年龄的验证,它只返回不正确的DOB

试图在其他线程中找到,但似乎更倾向于JavaScript和编程方面。请帮助我获取预期输出的SQL语句是什么:

表:客户

Column 1: NUM

Column 2: DOB 

Column 3: AGE
全国矿工联盟 出生日期 年龄 1. 851201888888 36 2. 701128999999 51 3. 910303777777 50 4. 950202555555 70
我不确定我是否理解这个问题,但似乎您正在寻找连接Concat

Select Table.*, Concat (Num, ' ', DOB, ' ', Age) as 'No DOB AGE'
From Table
希望这有帮助

试试这个

WITH t1 (NUM, DOB, AGE) AS (
  VALUES(3, '910303777777', 50)
),
t2 AS (
SELECT DOB
     , CASE WHEN substr(DOB, 1, 2) > substr(CURRENT date, 3, 2)
        THEN '19' || substr(DOB,1,2) || '-' || substr(DOB,3,2) || '-' || substr(DOB,5,2)
        ELSE '20' || substr(DOB,1,2) || '-' || substr(DOB,3,2) || '-' || substr(DOB,5,2)
       END AS dob_date
     , age      
  FROM t1
)
SELECT DOB
     , years_between(CURRENT date, dob_date) AS Age_by_DOB
     , age
  FROM t2
 WHERE years_between(CURRENT date, dob_date) <> age

注意:这也将返回第一行,因为此人尚未36岁。您没有提供足够的信息,因此可能需要根据您的需要调整此查询。

将DOB和Age同时存储没有多大意义,除非这是一个琐碎的问题:。年龄不应该根据出生日期来计算吗?这有点不确定?