【问题标题】:How to Calculate datediff between two date in year, month & days? [duplicate]如何计算年月日两个日期之间的日期差异? [复制]
【发布时间】:2012-06-26 13:45:27
【问题描述】:

可能重复:
How to calculate age in T-SQL with years, months, and days

我有一个应用程序可以完全计算特定日期的年龄,即 years-months-days 。在 sql server 2005 中是否有任何简单的方法来计算它。实际上我已经为此创建了一个函数,但它非常复杂。我只是想知道sql server中是否有我不知道的简单方法或任何功能?

计算任何申请人在特定日期的确切年龄的要求非常简单。

【问题讨论】:

标签: sql sql-server tsql sql-server-2005


【解决方案1】:

不确定它是否 100% 正确,但类似这样:

declare @d1 datetime, @d2 datetime, @y int, @m int, @d int
set @d1 = '2009-09-23'
set @d2 = '2012-04-23'

set @y = datediff(year, @d1, @d2) - 1
set @m = datediff(month, dateadd(year, @y, @d1), @d2) 
if dateadd(month, @m, dateadd(year, @y, @d1)) > @d2 set @m = @m - 1

set @d = datediff(day, dateadd(month, @m, dateadd(year, @y, @d1)), @d2)
print cast(@y as nvarchar) + ' year(s) ' + cast(@m as nvarchar) + ' month(s) and ' + cast(@d as nvarchar) + ' day(s)'

【讨论】:

  • 一个小问题,但在处理日期时,建议使用非文化特定日期格式 (yyyyMMdd) 在查询开始时明确设置日期格式,例如SET DATEFORMAT YMD。在此处回答时尤其如此,因为它将确保您的示例无论运行它的服务器设置如何都将运行。
  • 谢谢,完全正确。但是 AFAIK,我使用了 ISO 格式:en.wikipedia.org/wiki/ISO_8601
猜你喜欢
  • 2014-04-07
  • 2022-10-02
  • 1970-01-01
  • 2018-04-24
  • 2013-07-17
  • 2016-03-22
  • 1970-01-01
相关资源
最近更新 更多