已知病人出生日期,精确求出该病人年龄。单条MSSQL语句。

一品梅 2016-09-07 08:55:29
select * from v_jianchasqd
数据表各字段我导出为XML格式大家看看。:
<?xml version="1.0" ?>
<ROWDATA>

<ROW>
<C0>1</C0>
<SQDH>1000053992</SQDH>
<ZYHM></ZYHM>
<MZHM>10003</MZHM>
<BRLX>1</BRLX>
<SBBH></SBBH>
<FYXZID>XJ01</FYXZID>
<FYXZMC>自费</FYXZMC>
<BRZYID>10003</BRZYID>
<BRXM>门诊03</BRXM>
<BRXB>男</BRXB>
<CSRQ>1991-01-01</CSRQ>
<SFZH></SFZH>
<LXDH></LXDH>
<BRCH></BRCH>
<LXDZ></LXDZ>
<MZ>汉族</MZ>
<GJ>中国</GJ>
<SQYY>内乡县人民医院</SQYY>
<SQKS>急诊科</SQKS>
<SQYS>超级用户</SQYS>
<ZXKS>00040</ZXKS>
<JCSBLX>2</JCSBLX>
<SQSJ>2016-08-03 15:20:32</SQSJ>
<ZXSJ></ZXSJ>
<JCXM>16排CT头部平扫</JCXM>
<JCBW>颅脑</JCBW>
<ZS>咳嗽发烧三日</ZS>
<BS>发烧</BS>
<FZJC></FZJC>
<LCZD>感冒</LCZD>
<JCFY>280.0000</JCFY>
<SFJF>1</SFJF>
<SFQR>0</SFQR>
</ROW>

各位大大请教个问题。就是出生日期字段已有,求年龄。满周岁的用几岁,不满周岁的用几个月,不满月的用几天来表示年龄,用一条MS-sql语句,不用函数。

年龄字段可能形式:32岁,5个月,15天
...全文
222 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxfvba 2016-09-07
  • 打赏
  • 举报
回复
DECLARE @dt DATE='2015-08-01' select case when DATEDiff(yy,@dt,getdate())>3 then ltrim(DATEdiff(yy,@dt,getdate()))+'岁' when DATEDIFF(mm,@dt,getdate())<1.1 then LTRIM(DATEDIFF(dd,@dt,GETDATE()))+'天' else RTRIM((DATEDIFF(mm,@dt,GETDATE()))/12)+'岁'+RTRIM((DATEDIFF(mm,@dt,GETDATE()))%12)+'月' end
中国风 2016-09-07
  • 打赏
  • 举报
回复
引用 2 楼 only_endure 的回复:
谢谢版主,能不能大于三岁的,后缀没有月份。然后小于一个月的用天数表示。
DECLARE @dt DATE='2016-08-20'
SELECT CASE WHEN CAST(GETDATE() AS DATE)<DATEADD(MM,DATEDIFF(mm,@dt,GETDATE()),@dt) 
THEN CASE WHEN (DATEDIFF(mm,@dt,GETDATE())-1)=0 THEN RTRIM(DATEDIFF(dd,@dt,GETDATE()))+N'天' ELSE RTRIM((DATEDIFF(mm,@dt,GETDATE())-1)/12)+N'岁'+CASE WHEN (DATEDIFF(mm,@dt,GETDATE())-1)/12>=3 THEN '' ELSE RTRIM((DATEDIFF(mm,@dt,GETDATE())-1)%12)+N'月' END END
ELSE CASE WHEN DATEDIFF(mm,@dt,GETDATE())=0 THEN RTRIM(DATEDIFF(dd,@dt,GETDATE()))+N'天' ELSE RTRIM(DATEDIFF(mm,@dt,GETDATE())/12)+N'岁'+CASE WHEN DATEDIFF(mm,@dt,GETDATE())/12>=3 THEN '' ELSE RTRIM(DATEDIFF(mm,@dt,GETDATE())%12)+N'月' END END END  
一品梅 2016-09-07
  • 打赏
  • 举报
回复
谢谢版主,能不能大于三岁的,后缀没有月份。然后小于一个月的用天数表示。
中国风 2016-09-07
  • 打赏
  • 举报
回复
把变量替换成列名
DECLARE @dt DATE='1991-01-01'
SELECT CASE WHEN CAST(GETDATE() AS DATE)>DATEADD(MM,DATEDIFF(mm,@dt,GETDATE()),@dt) THEN RTRIM((DATEDIFF(mm,@dt,GETDATE())-1)/12)+N'岁'+RTRIM((DATEDIFF(mm,@dt,GETDATE())-1)%12)+N'月' ELSE RTRIM(DATEDIFF(mm,@dt,GETDATE())/12)+N'岁'+RTRIM(DATEDIFF(mm,@dt,GETDATE())%12)+N'月' END 
/*
(无列名)
25岁7月*/
本视频以程序员的视角分析和阐述了以下几方面的内容:第一,主要阐述人类的思维活动模式;第二,阐述人工智能如何实现;第三,讲解人工智能的具体实现方法。在阐述这三点主要内容的同时,通过具体示例说明了自然语言在开发人工智能时的重要作用,即自然语言是人类在认知自然时抽象的产物,是思维和自然联系的工具。利用在人工智能开发时,是人工智能和人类的沟通桥梁,时人工智能思维产物被人类认知的桥梁。所以说自然语言是开发人工智能必不可少的工具。人们在认知自然界的时候,获取的所有信息都是抽象后的信息。也就是我们的感官能够接收或感受到的信息。换句话说,就是获取的到信息都只是某个事物的一部分信息。比如眼前的显示器:眼睛看到的只是它的颜色、形状和大小,用手只能感知到它的重量及是否光滑、温度等信息,鼻子只能感知到其散发的味道。而它只有这些信息吗?当然不止,只是其它信息我们无法感知,或者不需要知道而已,因为已知的信息已经足够满足我们对其认知的需要了。加入我们需要移动显示器的时候,我们知道其外壳是塑料的,足够结实,能够保护屏幕就可以了,塑料的具体成分,我们不需要去了解就已经能满足我们认知的需要了。然后我们就可以拿着外壳移动显示器了。换个说法也可以:我们在认知自然界的时候,只是认知了事物的部分特征。这些特征已经基本满足了我们的认知需求。而特征就是事物的部分性质的抽象信息。自然语言就是最佳的抽象工具。通过自然语言,我们才能够将事物抽象为一个个的名词;将连续的动作抽象为动词;将描述名词和动词的信息抽象为形容词和副词;为了更加精确的描述事物的多少,产生了数量词来做度量衡;为了更加完美的描述自然界,又衍生出了虚词;为了表示关系,产生了介词;为了表示逻辑,产生了连词。而作为人类描述自然界事物的工具,自然语言也天然是人工智能和人类沟通交流的工具。现在的计算机及相关的软硬件已经十分的丰富。完全具备实现人工智能的条件,市面也流行着很多人工智能的算法,但在我看来这些算法充其量可以作为人工智能的部分外设。如图像识别、深度学习、NLP、机械臂等,可以为人工智能的眼睛、判别工具、手腿等外设。因为这些算法都有以下几个缺点:一、不会自动产生需求。除了设定好的目标外,无法识别人类的其它指令,也就无法做出正确的响应;二、方法是事先固化的,除固定的算法外,对于新的需求无法自动生成新的算法。三、对于目标无法自动设定达成标准,也就是说没有办法自动判断自己的动作执行结果是否符合自己的需求。四、无法自动生成目标,也就是说没有主动性。当遇到复杂任务时,无法通过分解任务来完成。本文站在程序员的视角,分三章系统的分析了人类的思维方式,并转化为程序逻辑,最终实现使用计算机程序来完成人类的思维过程。第一章主要是讲述的是人类的思维方式;第二章主要讲述的是如何将人类思维中需要的信息进行数据化,以便于存储到电脑中;第三章主要讲述的是程序的逻辑架构和部分实现方法。

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧