update A set B= case Len(Rtrim(C)) when 15 then '19' + SubString(C,7,2) + '-' + SubString(C,9,2) + '-' + SubString(C,11,2) when 18 then SubString(C,7,4) + '-' + SubString(C,11,2) + '-' + SubString(C,13,2) else A0111 end
上面的语句算出来出生日期怎么在里面加语句计算出年龄了,个位大侠帮帮忙啊,谢谢了。
1ã计ç®å¹´é¾å ¶å®å°±æ¯è®¡ç®å½åæ¥æååºçæ¥æä¹é´çå·®å¼
2ãSQL计ç®æ¶é´å·®å¼ä½¿ç¨çå½æ°æ¯ï¼Datediff()
å®ä¹åç¨æ³ï¼
DATEDIFF() å½æ°è¿å两个æ¥æä¹é´ç天æ°ã
è¯æ³ï¼
DATEDIFF(datepart,startdate,enddate)
startdate å enddate åæ°æ¯åæ³çæ¥æ表达å¼ã
datepart åæ°å¯ä»¥æ¯ä¸åçå¼ï¼
datepart--缩å
å¹´--yyæyyyy
å£åº¦--qqæq
æ--mmæm
å¹´ä¸çæ¥--dyæy
æ¥--ddæd
å¨--wkæww
ææ--dwæw
å°æ¶--hh
åé--miæn
ç§--ssæs
毫ç§--ms
å¾®å¦--mcs
纳ç§--ns
示ä¾ï¼
ç»æï¼
DiffDate3ãé£ä¹ä¾æ®åºçæ¥æ计ç®å¹´é¾å°±å¯ä»¥è¿ä¹åï¼å设表å为table_1ï¼åºçæ¥æå为ï¼BirthDate_colï¼ï¼
selectsql server的了,我知道计算年龄是 select datediff(yy,B,getdate()) from A
但能不能把它们合并成一句了?
你是说拼到update语句中去,这个应该是可以的。
追问那怎么拼了,楼上的那位我算出的结果是这样了,这不是年龄了
能不能合并成一句了?
追答应该可以
update A set B= datediff(year,convert(datetime,case Len(Rtrim(C)) when 15 then '19' + SubString(C,7,2) + '-' + SubString(C,9,2) + '-' + SubString(C,11,2) when 18 then SubString(C,7,4) + '-' + SubString(C,11,2) + '-' + SubString(C,13,2) else A0111 end
),getdate())
想法是先转换成日期类型,再与getdate()来计算
不行额,算出来的结果是这样了
本回答被网友采纳