person表有字段是birthday,怎么样写语句,能查询出年龄?

问题描述

person表有字段是birthday,怎么样写语句,能查询出年龄?

题目要求 如果年龄一年以上用year来表示,小于一年就用month来表示,年龄小于一个月的,就用day来表示

解决方案

数据库都有类似datediff的函数,可以算出birthday和当前日期相差多少天。获取多少天后。用case when的方式判断该字段(相当于变成语言中的if else)

解决方案二:

如果一个月以30天,一年以365天算的话,可以这样写:
SELECT birthday ,
CASE WHEN DATEDIFF(d, birthday, GETDATE()) >= 365
THEN CONVERT(NVARCHAR(50), DATEDIFF(d, birthday, GETDATE())
/ 365.0) + '年'
WHEN DATEDIFF(d, birthday, GETDATE()) >= 30
AND DATEDIFF(d, birthday, GETDATE()) < 365
THEN CONVERT(NVARCHAR(50), DATEDIFF(d, birthday, GETDATE())
/ 30.0) + '个月'
WHEN DATEDIFF(d, birthday, GETDATE()) < 30
THEN CONVERT(NVARCHAR(50), DATEDIFF(d, birthday, GETDATE()))
+ '天'
ELSE ''
END AS Age ,
*
FROM dbo.person

时间: 2024-08-24 09:05:24

person表有字段是birthday,怎么样写语句,能查询出年龄?的相关文章

mysql把一个表某个字段的内容复制到另一张表的某个字段的SQL语句写法

 有时候,我们需要复制某个字段一整列的数据到另外一个新的字段中,或是需要把某个表的某个字段的值跨表复制到另一个表中的某个字段,本文就罗列了一些SQL语句写法,需要的朋友可以参考下   需求:把一个表某个字段内容复制到另一张表的某个字段.   实现sql语句1:     代码如下: UPDATE file_manager_folder f1 LEFT OUTER JOIN file_manager_folder f2      ON f1.name = f2.name AND f2.parentI

ibatis 多表关联 字段名重复问题

问题描述 ibatis多表关联字段名重复,然后映射到类的时候后面的字段跟前面的一样了,sql查询返回值当然是不一样的比如:一个教师表里对应2个class字段<resultMapid="tch"resultClass="tch"><resultproperty="id"column="id"/><resultproperty="name"column="name&quo

用SQL语句删除表中空字段

删除SQL表中某字段字符为空,Null,零长度字符串,将删除记录. 用SQL收集数据的时候,发现一些记录是不符合要求的,需要将空字段删除. 总结了下,删除的几种方法.以及扩展了下应用. 删除SQL表中某字段字符为空,Null,零长度字符串,将删除记录 delete * from T_Nav_Team where title is null delete * from T_Nav_Team where isnull(title) = true delete * from T_Nav_Team wh

Hibernate学习(三)Hibernate给表和字段设置前后缀及分隔符

在<一口一口吃掉Hibernate(一)--使用SchemaExport生成数据表>中介绍了如何生成数据表.但是这只是最基本的.Hibernate在生成或者操作数据库时,会受一些限制.比如一开始设计表的时候,直接写成了user(id,name,password,createTime)  这种格式的.但是客户后来要求表名称要以"t_"开头,字段名要以"stu_"开头,可以是一些数据库的关键字,单词之间以"_"隔开,方便他们维护.例如:T

sql语句实现表的字段名查询

下面为您介绍的是查询表的字段名的sql语句写法,sql语句可以实现许多的功能,希望可以您在学习sql语句使用方面获得启示. select name from syscolumns where id = (select id from sysobjects where type = 'u' and name = '相应表名')   或者   select name from syscolumns where id = object_id('相应表名')  用以上sql语句输入相应表名就可以查到表的

sql server 怎么判断一个表里面的字段拆分之后是否可以在另一个表的字段里面查到数据

问题描述 sql server 怎么判断一个表里面的字段拆分之后是否可以在另一个表的字段里面查到数据 其中F_Split是分割以逗号连接的字符串的方法 怎么判断string字段拆分之后的数据是否能在@a表中的id字段找到对应的记录 insert into @a(idname)values(1'A')insert into @a(idname)values(2'B')insert into @a(idname)values(3'C')select * from @ainsert into @c(s

PostgreSQL 全表 全字段 模糊查询的毫秒级高效实现 - 搜索引擎也颤抖了

标签 PostgreSQL , 分词 , 全文检索 , 全字段检索 , 任意字段检索 , 下拉框选择 , 搜索引擎 背景 在一些应用程序中,可能需要对表的所有字段进行检索,有些字段可能需要精准查询,有些字段可能需要模糊查询或全文检索. 比如一些前端页面下拉框的勾选和选择. 这种需求对于应用开发人员来说,会很蛋疼,因为写SQL很麻烦,例子: 之前写过一篇文章来解决这个问题 <PostgreSQL 行级 全文检索> 使用的是全文检索,而当用户的需求为模糊查询时? 如何来解决呢? 不难想到我之前写过

hibernate-数据库表增加字段后如何在获取历史数据时添加默认值?

问题描述 数据库表增加字段后如何在获取历史数据时添加默认值? 表增加了一个字段,定义是基本类型有默认值,新生成的数据没问题但是历史数据该字段都是空值,导致程序会出错,JavaBean中的字段类型double和数据库中的空值不匹配,本来想在get和set中做点文章,返回一个默认值,但是用hibernate的detachedCriteria查询返回的list直接就报null的错误,set方法都没执行,不知道是什么原理为什么set方法都没执行,是不是在set传入变量的时候就发现空值然后就报错了?另外有

mysql 表的字段名 大小写转换问题

问题描述 mysql 表的字段名 大小写转换问题 我刚建表的时候 表的字段全是大写的 现在经理让改成小写的 这么多表一个一个字段改太麻烦了 有一条sql就能解决吗? 解决方案 有一个办法是把mysql数据库连同schema一起导出到文件,然后用编辑器查找替换字段名,保存,再导入回数据库 解决方案二: 有没有数据,没有的话,导出表结构sql,word或者winhex替换小写,然后重新建表. 如果有数据,并且表很多,自己写程序,用alter table去修改.遍历表 http://database.