SQL 查询年令 (100分)

  • 主题发起人 主题发起人 madaha
  • 开始时间 开始时间
M

madaha

Unregistered / Unconfirmed
GUEST, unregistred user!
已知出生年月日字段CSNY,如何用SQL语句查询当年年底年令为30周岁以上的记录。
 
select * from tablename
where (year(getdate())-year(csny))>30
 
要看什么数据库了
可以看以下数据库提供了什么日期处理函数
mysql/sqlserver/oracle都提供了,但是不同的
 
sybase数据库
 
建一个查询视图,先看看 查询视图中都有都有什么函数可以利用不就行了
 
主要是构造今年12月31日!
上面的第一种做法不精确。
 
第一種應該可以的,因為隻要是在年底,而人的生日在一年中不可能太於12/31
 
如果是查询当前年令为30周岁及以下的记录呢?(对不起修改了一下)
 
select * from table where datepart(year,table.CSNY) > 2002 - 30
 
第一种方法应该是对的。
 
currentD,BirthD1:TDate;
.
.
.
CurrentD:=Date();
BirthD1:=CurrentD-StrToInt(SpinEdit1.Text)*365;
Add(And 出生日期>='''+DateToStr(BirthD1)+''');
 
最好是自己算一下,这样不管什么数据库都可以用了,比如
//<=30患病总计
birth:= IntToStr(StrToInt(Copy(DateToStr(Date),1,4))-30);
sql = 'select * from table1 where csny<=#'+birth+'-12-31#'+
' and csny<=#'+birth+'-01-01#';
这样可能不太精确,不过年龄本来就不是精确的东东,像1979-12-20号出生的人,
今天可以算是23岁,也可以算是22岁

 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
swish
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部