【问题标题】:Count the amount of years from a certain date SQL计算从某个日期开始的年数 SQL
【发布时间】:2013-09-03 09:27:01
【问题描述】:

我想计算从一个人出生的那一年到今天的年数。我有要使用的组件,但不知道如何使用它们。

SELECT COLUMN1, COLUMN2, DATEPART(YY,GETDATE()),
CONVERT(INT,+19)))LEFT(TABLE.COLUMN,2)

我想在生日前使用 +19 显示它。数据库中的示例出生年份显示为 YY 而不是 YYYY。这就是为什么我要添加 19,因此 SQL 将计算从 19YY 到 2013 的年份。

【问题讨论】:

  • 看起来可能重复。请看 [这里][1] [1]:stackoverflow.com/questions/1572110/…
  • 我不太明白你在问什么。是否要将存储在字符串中的 YY 的出生年份显示为 YYYY?还是要计算从出生年份到今天的年数?
  • 是的!正是@ThorstenKettner
  • 由于缺少日/月,并且 1999 年 12 月 31 日之后的生日将不起作用,如评论 Select DatePart(YY,GETDATE()) - Cast('19' + LEFT(Col,2) as int) as PossibleAge
  • @andrejcurcic - 用“是”回答“非此即彼”的问题并不能澄清任何事情。

标签: sql sql-server sql-server-2008 tsql


【解决方案1】:

试试这个

SELECT  id
    ,   Name
    ,   DATEDIFF(yy, CONVERT(DATETIME, DOB), GETDATE()) AS AGE
    ,   DOB
FROM MyTable

【讨论】:

  • 这不会找到年龄,根据这个,当出生日期是 2012-12-31 并且 getdate 是 2013-01-01 时,孩子将是 1 岁
【解决方案2】:
declare @DOB date = '19680411'
select datediff(year, @DOB, getdate())- case when month(@DOB)*32 + day(@DOB) > 
month(getdate()) * 32 + day(getdate()) then 1 else 0 end

【讨论】:

    猜你喜欢
    • 2010-11-09
    • 2016-01-11
    • 1970-01-01
    • 1970-01-01
    • 2020-07-20
    • 2018-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多