我有这张桌子:
$mbutton_click = {
if ($this.Text -ne "enable") {
$this.Parent.Controls["label"].Text = "disabled"
$this.Text = "enable"
}
else{
$this.Parent.Controls["label"].Text = "enabled"
$this.Text = "disable"
}
}
我如何获取一个具有相同Dob且年龄恰好等于或小于100岁的人的列表?
预期行:
name dob
Peter 1914-07-23
John 1990-03-25
Sandra 2014-07-23
Sam 1911-01-01
Jane 2011-01-01
Tom 2017-01-01
dob之间的差异应为100年
答案 0 :(得分:1)
如果DOB是日期数据类型,则建议使用TRUNC
和ADD_MONTHS
。
SELECT a.name
FROM my_table a,
my_table b
WHERE TRUNC(a.dob) = TRUNC(ADD_MONTHS(b.dob, 100*12))
答案 1 :(得分:0)
另一种可能性是将DOB转换为仅一个月和一天,然后对该分组进行分组以查找大于1的任何事物。换句话说:
select to_char(dob, 'MM-DD') as birthday
from mytable
group by to_char(dob, 'MM-DD')
having count(*) > 1
这应该给你所有的骗子。然后,您可以要求每个有其中一个生日的人:
select name, dob
from mytable
where to_char(dob, 'MM-DD') in (
select to_char(dob, 'MM-DD') as birthday
from mytable
group by to_char(dob, 'MM-DD')
having count(*) > 1
)
它可能不是最快的,但对我来说似乎是最直观的。
编辑:在重读问题和答案时,我不确信自己理解正确。但是我认为这些答案都不是您想要的,因此也许您必须将所有答案结合起来才能得到所需的东西。
答案 2 :(得分:0)
尝试以下操作:
select * from persons where MONTH(dob) = 07 and Day(dob) = 23 ;