⑴ sql计算年龄
当然报错了
因为你没有制定查询条件,
现在写的语句select查询出Sales.Decile表中所有记录,而你的update是等于(意思更新一条记录),所以报错了,应该指定where条件
⑵ 如何用SQL语句把出生日期计算年龄,比如是1984-2-16怎么算出年龄啊
语句为:SELECT FLOOR(DATEDIFF(CURRENT_DATE,'1984-2-16')/356)
常用sql对数据库操作:
连接数据库命令:mysql -u root -p密码
创建数据库:create database dbname;
查看所有的数据库:show databases;
删除数据库:drop database dbname;
切换数据库:use dbname;
知识拓展:
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于Oracle旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。
⑶ 怎么用SQL语句表示年龄表中只有出生日期这个字段
首先呢根据题目来看实在数据库实现的时候没有考虑全面。在设计阶段可以只有出生日期,但应该能分析到年龄是经常使用的,必须将年龄设计成派生属性,在关系的实现时将其作为表的一个列age,并为其设置默认值year(getdate())-year(出生日期),这样在查询的时候直接查选age即可。建议修改表结构,一劳永逸。其次,如果不修改表结构,也只能使用sql中的日期函数,比如datediff。在这给出sqlserver中的写法:
select DATEDIFF(yy, GETDATE(), 出生日期) as 'age' from table_name
还有一种办法,就是在应用编程中操作,利用脚本语言进行处理。
⑷ SQL查询所有男生的姓名、年龄,并按年龄排序
SLECT
‘姓名','年龄'
FROM
表名
WHERE
'性别'='男'
ORDER
BY
‘年龄';
ORDER
BY
默认的是升序排列
ASC
也可设置为降序排列
DESC
如:
安装年龄降序排列
SLECT
‘姓名','年龄'
FROM
表名
WHERE
'性别'='男'
ORDER
BY
‘年龄'
DESC;
⑸ 一个很简单的SQL题“知道生日怎样求年龄”
这个功能如果在SQL里做,不是一个很简单的SQL题了。
不过思路其实很简单:
上次提供给你的写法的确是有点问题。请看下面的解释:
相隔年数:生日与现在对比很容易计算得到,要注意,如果出生日期比现在迟则需要减1,因为你计算的是周岁;
月数:( 生日 + 相隔年数 )与现在对比得到,同样,如果生日日期比现在迟则需要减1;
日数:( 生日 + 相隔年数 + 月数)与现在对比得到,如果今天不算,那么减1,如果今天算,那么不减。
具体就是:
“年”=
select
case
when datepart( dy, 生日) > datepart( dy, getdate() ) then datediff( yy,生日,getdate()) -1
else datediff( yy,生日,getdate())
end
“月”=
select
case
when datepart( day, 生日) > datepart( day, getdate() ) then
datediff(mm,dateadd( yy,
case
when datepart( dy, 生日) > datepart( dy, getdate() ) then datediff( yy,生日,getdate()) -1
else datediff( yy,生日,getdate())
end,
生日
),
getdate()) -1
else datediff(mm,dateadd( yy,
case
when datepart( dy, 生日) > datepart( dy, getdate() ) then datediff( yy,生日,getdate()) -1
else datediff( yy,生日,getdate())
end,
生日
),
getdate())
end
“日”=
select datediff(day, dateadd( mm, case
when datepart( day, 生日) > datepart( day, getdate() ) then
datediff(mm,dateadd( yy,
case
when datepart( dy, 生日) > datepart( dy, getdate() ) then datediff( yy,生日,getdate()) -1
else datediff( yy,生日,getdate())
end,
生日
),
getdate()) -1
else datediff(mm,dateadd( yy,
case
when datepart( dy, 生日) > datepart( dy, getdate() ) then datediff( yy,生日,getdate()) -1
else datediff( yy,生日,getdate())
end,
生日
),
getdate())
end, dateadd( yy, case
when datepart( dy, 生日) > datepart( dy, getdate() ) then datediff( yy,生日,getdate()) -1
else datediff( yy,生日,getdate())
end,生日)),getdate())
把年月日连接起来,就是:
select
convert( varchar,
case
when datepart( dy, 生日) > datepart( dy, getdate() ) then datediff( yy,生日,getdate()) -1
else datediff( yy,生日,getdate())
end)
+' 年 '+
convert( varchar,
case
when datepart( day, 生日) > datepart( day, getdate() ) then
datediff(mm,dateadd( yy,
case
when datepart( dy, 生日) > datepart( dy, getdate() ) then datediff( yy,生日,getdate()) -1
else datediff( yy,生日,getdate())
end,
生日
),
getdate()) -1
else datediff(mm,dateadd( yy,
case
when datepart( dy, 生日) > datepart( dy, getdate() ) then datediff( yy,生日,getdate()) -1
else datediff( yy,生日,getdate())
end,
生日
),
getdate())
end
)
+' 月 '+
convert( varchar,
datediff(day, dateadd( mm, case
when datepart( day, 生日) > datepart( day, getdate() ) then
datediff(mm,dateadd( yy,
case
when datepart( dy, 生日) > datepart( dy, getdate() ) then datediff( yy,生日,getdate()) -1
else datediff( yy,生日,getdate())
end,
生日
),
getdate()) -1
else datediff(mm,dateadd( yy,
case
when datepart( dy, 生日) > datepart( dy, getdate() ) then datediff( yy,生日,getdate()) -1
else datediff( yy,生日,getdate())
end,
生日
),
getdate())
end, dateadd( yy, case
when datepart( dy, 生日) > datepart( dy, getdate() ) then datediff( yy,生日,getdate()) -1
else datediff( yy,生日,getdate())
end,生日)),getdate())
) + ' 日 '
像这种问题,一般不会在SQL中来做的,因为相对来说太复杂了。一般会在前台程序代码里实现,不过既然你提出这个问题来了,我就研究了几个小时,算是对新人的支持,呵呵。
⑹ sql求年龄
你这是oralce吧
--获取两时间年份差
select EXTRACT(year FROM to_date('2009-05-01','yyyy-mm-dd')) - EXTRACT(year FROM to_date('2008-04-30','yyyy-mm-dd')) years from al;
如果是sql
那就简单了
⑺ SQL语句如何根据出生日期计算年龄
第一种:
一张人员信息表里有一人生日(Birthday)列,跟据这个列,算出该人员的年龄
datediff(year,birthday,getdate())
例:birthday = '2003-3-8'
getDate()= '2008-7-7'
结果为:5
这样结果是会返回该人员的大概年龄,但不精确.不会精确到月或日.
按照上面测试的日期,该人员的实际年龄应该还不满5岁。在需要精确年龄的时候,就会有错.
第二种:
FLOOR(datediff(DY,birthday,getdate())/365.25)
FLOOR函数:
FLOOR(expr) 返回小于或等于expr的最大整数.FLOOR(1.1)返回1,FLOOR(-1.1)返回-2,FLOOR(1)返回1
这样就可以精确算出,该人员当前实际年龄了.
测试:
birthday = '2000-7-8'
getdate()= '2007-7-7'
算出结果为:6
在Oracle中,要获得日期中的年份,例如把sysdate中的年份取出来。
一种常用的方法是:to_number(to_char(sysdate,'yyyy'))
还有一种更好的方法,那就是使用oracle提供的Extract函数,使用方法是:
extract(year from sysdate) ,此方法获得的结果是数值型的 ,这种方法省掉了类型转换,更加简洁。
相应的,要取得月份或日,可以用extract (month from sysdate) 和extract (day from sysdate)
⑻ sql 计算年龄
用getdate()获得今天的日期,再用datediff算的年数
也可以直接取年份相减啊
⑼ SQL中,如何查询年龄
日期函数,access与SQL Server是有一点区别的,
如果是access的话,
select * from 你的表名
where year(now())-year(出生日期) between 20 and 25
如果是SQL Server的话,
select * from 你的表名
where year(getdate())-year(出生日期) between 20 and 25
呵呵,希望能有帮助,^_^