[英]How to calculate age by day, month and year in in trigger update SQL
我正在使用这段代码,但出了点问题。
我尝试使用许多代码但未能实现等式。
我输入计算年龄加日加日加月加年加年
ALTER TRIGGER [dbo].[trg_DeasignTeamMonthly]
ON [dbo].[StudentData]
AFTER INSERT, DELETE, UPDATE
AS
BEGIN
UPDATE dbo.StudentData
SET [Day] = DATEDIFF(DAY, StudentData.DateOfBirth,[dbo].StudentData.DateToDay) / 365
UPDATE dbo.StudentData
SET [Month] = MONTH([dbo].StudentData.DateToDay) - 1
UPDATE dbo.StudentData
SET [Year] = YEAR([dbo].StudentData.DateToDay) - YEAR([dbo].StudentData.DateOfBirth)
END
为此,我创建了一个用于计算的存储过程,您可以在任何需要的地方使用它(触发器、其他存储过程、)
CREATE PROCEDURE CalcDurationRange
@StartDT DATETIME,
@EndDT DATETIME,
@Year INT OUT,
@Month INT OUT,
@Day INT OUT
AS
DECLARE @xDate DATETIME = DATEADD(YEAR,YEAR(@EndDT)-YEAR(@StartDT),@StartDT)
IF(@xDate>@EndDT)
SET @xDate = DATEADD(YEAR,-1,@xDate)
SET @Year = DATEDIFF(YEAR,@StartDT,@xDate)
SET @Month = DATEDIFF(MONTH,@xDate,@EndDT)
IF(DATEADD(MONTH,@Month,@xDate)>@EndDT)
SET @Month = @Month -1
SET @Day = DATEDIFF(DAY,DATEADD(MONTH,@Month,@xDate),@EndDT)
GO
使用此 SP 的示例:
DECLARE @xYear INT, @xMonth INT, @xDay INT
EXEC CalcDurationRange
'1987-12-01',
'2021-10-01',
@xYear OUT,
@xMonth OUT,
@xDay OUT
PRINT @xYear
PRINT @xMonth
PRINT @xDay
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.