① sql计算年龄时显示SYSDATE无效
从这错误信息看,是sysdate字段不否存在Student表中,差下sysdate字段是否存在Student表中,字段拼写是否正确
② 在sqlserver中写一个存储过程 入参为年龄 格式为日期格式(x年x月x天) 求他的出生日期
没用过sqlserver,不知道具体有什么差异,这是在pl/sql写的,要转换成xx年xx月在前台再转
要是写存储过程,需要操作那些表,没有描述。
要是返回出生日期,那需要写个函数,存储过程没有返回值。csrq假设是date格式
create or replace function F_GET_CSRQ(v_age in number) return varchar2 is
result varchar2(20);
begin
select to_char(csrq,'yyyy-mm-dd') into result from table t where t.age= v_age;
return(result);
end F_GET_CSRQ;
③ 怎么向sqlserver插入日期,并计算出年龄
(1)假设你没有生日这一列alter table add birthday datetime
假设你没有年龄这一列alter table add age float
(2)给某人加入生日1990-1-1,update table set birthday ='1990-1-1' where ....
计算年龄 update table set age =datediff(year,birthday,getdate()) where ....
以上代码sqlserver2008
④ 用Oracle/SqlServer 的存储过程,实现如下功能:当用户录入完出生日期之后,自动计算出年龄并存入字段year
我用的是SQL SERVER 分析问题
你的需求要用存储过程的话 方法如下:
把你录入的出生日期作为你的存储过程参数,当然你的存储过程还需要一个表示身份的字段 我假设为ID
create proc ageA (@id int,@birth datetime)
as
begin
update p_info
set year=datediff(year,@Birth,getdate())
where id=@id
end
--但是如果你想全自动完成
就是说 你想往表里插入你的出生日期字段值后 表中的year字段自己算出来的话 有2个方法
1.计算列
CREATE TABLE p_info
(
id INT PRIMARY KEY ,
name VARCHAR(10),
birth DATETIME,
year AS datediff(year,birth,getdate())
)
这么建表就好了
2.触发器
CREATE TRIGGER trIns ON p_info
AFTER INSERT
AS
BEGIN
UPDATE p_info
SET year=datediff(year,d.birth,getdate())
FROM inserted d
WHERE p_info.id=d.id
end
个人强烈介意使用第一种计算列
⑤ 怎么用SQL语句表示年龄表中只有出生日期这个字段
首先呢根据题目来看实在数据库实现的时候没有考虑全面。在设计阶段可以只有出生日期,但应该能分析到年龄是经常使用的,必须将年龄设计成派生属性,在关系的实现时将其作为表的一个列age,并为其设置默认值year(getdate())-year(出生日期),这样在查询的时候直接查选age即可。建议修改表结构,一劳永逸。其次,如果不修改表结构,也只能使用sql中的日期函数,比如datediff。在这给出sqlserver中的写法:
select DATEDIFF(yy, GETDATE(), 出生日期) as 'age' from table_name
还有一种办法,就是在应用编程中操作,利用脚本语言进行处理。
⑥ SQL Server:用SQL语句输出每个人的信息以及这个人所在城市中该年龄段的人数。
SELECT t1.FNAME, t1.FCITY, t1.FAGE, t1.FSALARY, t2.cnt
FROM T_Person t1,
(SELECT FCITY, count(FNAME) cnt
WHERE FCITY = t1.FCITY
AND FAGE LIKE substring(FAGE, 1, 1) + '%') t2
WHERE t1.FCITY = t2.FCITY
用FAGE LIKE substring(FAGE, 1, 1) + '%') t2来筛选出该年龄段的。SUBSTR可能在sqlserver里面需要调整下。
⑦ 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 server数据库里通过出生日期,然后算出他的年龄
SqlServer中通过出生日期计算年龄可用year函数。步骤如下:有student表,数据如下,其中birthday列为生日列。
美国Microsoft公司推出的一种关系型数据库系统。SQLServer是一个可扩展的、高性能的、为分布式客户机/服务器计算所设计的数据库管理系统,实现了与WindowsNT的有机结合,提供了基于事务的企业级信息管理系统方案。
主要特点是高性能设计,可充分利用WindowsNT的优势。
系统管理先进,支持Windows图形化管理工具,支持本地和远程的系统管理和配置。
强大的事务处理功能,采用各种方法保证数据的完整性。
支持对称多处理器结构、存储过程、ODBC,并具有自主的SQL语言。 SQLServer以其内置的数据复制功能、强大的管理工具、与Internet的紧密集成和开放的系统结构为广大的用户、开发人员和系统集成商提供了一个出众的数据库平台。
⑨ 关于一个sql语句书写 查询年龄的
不知道你具体用的什么数据库
给你sqlserver的写法吧
selectA,B
from表
whereDATEDIFF(dd,b,getdate())*1.0/365between10and30
大概就是这样,我是用天计算的,各个数据库有差别,,,,
⑩ SQL SERVER 2008 怎么在输出年龄后加个 岁 字
SqlServer中通过出生日期计算年龄可用year函数。
工具:SqlServer 2008 R2
步骤:
1、有student表,数据如下,其中birthday列为生日列: