sql-server - SQL 中的年龄计算器

标签 sql-server t-sql

我有以下 SQL 查询,显示正确的结果为“28 年 1 个月 16 天”。

但是,我想要,如果数字大于 1,它会显示为年、月、日(复数)。

例如 - 在上面的结果中,年份大于 1,则显示 28 年。

Declare @DOB datetime,@TempDate datetime,@Year int,@Month int,@Day int
Set @DOB='09/13/1991'
Set @TempDate=@DOB

Select @Year=DateDiff(Year,@TempDate,getdate())-
                Case
                When (Month(@TempDate)>Month(getdate()) or Month(@TempDate)=Month(getdate()) AND Day(@TempDate)>Day(getdate()))
                Then 1
                Else 0
                End

Select @TempDate=DateAdd(YEAR,@Year,@DOB)
Select @Month=DateDiff(Month,@TempDate,getdate())-
                Case
                When (Month(@TempDate)>Month(getdate()) OR Day(@TempDate)>Day(getdate()))
                Then 1
                Else 0
                End

Select @TempDate=DateAdd(Month,@Month,@TempDate)

Select @Day=DateDiff(Day,@TempDate,getdate())

Select Cast(@Year as nvarchar(2))+ ' Year, '+Cast(@Month as nvarchar(2))+ ' Month, '+Cast(@Day as nvarchar(2))+' Day old'

最佳答案

例如尝试这个:

SELECT CAST(@Year AS NVARCHAR(2)) + IIF(@Year > 1,' Years, ','Year, ') + CAST(@Month AS NVARCHAR(2)) + IIF(@Month > 1,' Months, ',' Month, ') + CAST(@Day AS NVARCHAR(2)) + IIF(@Day > 1,' Days ',' Day ') + 'old'

关于sql-server - SQL 中的年龄计算器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58605917/

相关文章:

sql-server - 如何声明带有计算字段的 SQL 表?

sql - 列值转换

sql - 复合主键或主代理键与以下场景?

sql-server - 插入 View ,而不是触发器、身份、多个表?

sql - 如何使用 SQL Server 获取我的案例中的日期?

t-sql - 1 和 0 在 T-SQL 中不被识别为 bool 常量

sql - 将所有查询合并为一个

sql - 如何使用 sql server management studio 将 blob 插入数据库

java - 将相同的数据插入属于不同服务器的两个表中

sql-server - asp.net + MS SQL Server : Best Source Control