我在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之类的东西。哪个应该从当前日期和时间中扣除,提到月份和年份
如果您还有其他需要,请告诉我。
答案 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]
再次感谢大家。