我需要根据DOB更新SQL Server 2008中的年龄

时间:2015-10-09 11:00:07

标签: sql-server sql-server-2008

我在SQL Server 2008中有一个表,它有DOB(例如1992-03-15),在同一个表中,我有一个//if EmailTextField is a UITextField instance if EmailTextField.text != nil && !EmailTextField.text!.isEmpty { } if let text = EmailTextField.text where !text.isEmpty { } 列,现在是Null。我需要根据DOB更新Age。我在同一个表中有两列(AGE和DOB)。我需要脚本来完成我的工作,根据DOB

更新Age

另一个在同一个表中,我有到达月(例如8)和到达年(例如2011),根据我需要更新另一列(国家时间)。比方说(08(MM),2011(YYYY)),应该更新(TimeInCountry) - 4.2之类的东西。哪个应该从当前日期和时间中扣除,提到月份和年份

如果您还有其他需要,请告诉我。

3 个答案:

答案 0 :(得分:0)

不确定您的年龄列是什么数据类型

您可以执行以下操作

Update TableName
Set Age = DATEDIFF(yy, DOB, getdate())

如果您使用小数

Age = DATEDIFF(hour,DOB,GETDATE())/8766.0 

如果您将来添加新行

,我认为创建触发器帐单应该是完整的

答案 1 :(得分:0)

对于yopur第一个问题,

UPDATE TABLE_NAME SET AGE=DATEDIFF(hour,DOB_COLUMN,GETDATE())/8766.0

如果你想在Round,

UPDATE TABLE_NAME SET 
AGE= CONVERT(int,ROUND(DATEDIFF(hour,DOB_COLUMN,GETDATE())/8766.0,0))

并不确定你在第二个问题中真正想要做什么,但我猜你可以试试像......

Update Table_Name set 
TimeInCountry=cast(len(Arrival_year) as varchar(4))+'.'+cast(len(Arrival_Month) as varchar(2))

答案 2 :(得分:0)

我已经实现了用户定义的功能 这可能对某人有所帮助。

ALTER FUNCTION [dbo].[TimeInCountry]
(
 @ArrivalMonth varchar(10),
 @ArrivalYear Varchar(10)
) RETURNS VARCHAR(10)
BEGIN
Declare @Ageyear int
Declare @Agemonth int
Declare @Final varchar(10)
Declare @CurrentMonth int
Declare @Currentyear int
Set @CurrentMonth = (Select DatePart(mm, GetDate()))
Set @Currentyear = (Select DatePart(yyyy,GetDate())) 


Select @AgeYear = @Currentyear - @ArrivalYear
Select @AgeMonth = @CurrentMonth - @ArrivalMonth

if (@AgeMonth < 0) 
BEGIN
                Set @AgeYear = @AgeYear - 1
                Set @AgeMonth = @AgeMonth + 12
END  
Select @Final = (Select Cast(@AgeYear as Varchar(max)) +'.'+ Cast(@AgeMonth as varchar(max)))

Return @Final

---And finally call this function where to update. 

--To Check
 Select [DBName].TimeInCountry (8,2013) 
--- and Finally updating.

Update [DBName].[dbo].[TableName] Set TimeInCountry  = dbo.TimeInCountry (ArrivalMonth,ArrivalYear) from [DBName].[dbo].[TableName]  

再次感谢大家。