年龄来自sb中的dob

时间:2010-10-11 00:11:57

标签: sql

在sql查询中,我在where子句中遇到问题。

我在桌子上有一个dob和ssn的人。我需要找到最年轻的snr。顾客。最年轻的高级客户的年龄从55岁开始.DOB的数据包含所有儿童,父母,高级客户的数据。在“where”行我必须写一个条件,检查年龄是否> 55,并且必须在高级客户中小一些。请给我一些方法。我之前发过一个类似的问题,但没有得到任何可以帮助我解决它的回复。

我的表格中没有年龄参数。

SSn    DOB
22   1950-2-2
21   1987-3-3
54   1954-4-7

我需要找到对应于年龄的ssn必须大于55且小于上述值。

2 个答案:

答案 0 :(得分:1)

如果您有DOB,那么您可以根据当前日期轻松计算年龄:

WHERE DATE_ADD(DOB, INTERVAL 55 YEAR) < NOW()

这将为DOB增加55年,如果它大于当前时间,那是真的。这表明他们至少55岁。

答案 1 :(得分:1)

在下面的脚本中,子选择找到55岁或以上的最年轻人的DOB;然后用它来查找相应的SSN记录。 [这使用SQL Server语法。]

SELECT yt.* 
FROM *yourtable* yt
INNER JOIN 
(
    SELECT MAX(DOB) AS DOB
    FROM *yourtable*
    WHERE DATEADD(year, 55, DOB) < getdate() 
) maxdob
ON maxdob.DOB = yt.DOB

n.b。如果有多个人使用相同的DOB,您可能会找到多条记录。 如果要强制执行此单一限制,请在SELECT语句中添加TOP 1子句。 HTH