0

以下を基礎として使用して、人の年齢を月でどのように計算しますか?これを変更する方法がわからないため、年ではなく月が計算されます

          IF cast(datepart(m, GETDATE()) as int) > cast(datepart(m,@in_DOB) as int)
    SET @age = cast(datediff(yyyy,@in_DOB,GETDATE()) as int)
      else
    IF cast(datepart(m,GETDATE()) as int) = cast(datepart(m,@in_DOB) as int)

    IF datepart(d,GETDATE()) >= datepart(d,@in_DOB)

    SET @age = cast(datediff(yyyy,@in_DOB,GETDATE()) as int)

    ELSE

    SET @age = cast(datediff(yyyy,@in_DOB,GETDATE()) as int) -1

    ELSE

    SET @age = cast(datediff(yyyy,@in_DOB,GETDATE()) as int) - 1

    RETURN @age
4

3 に答える 3

0

常にUTC日付をdbに保存する必要があります。多くの手間を省きます。

select DATEDIFF(second,@in_DOB,GETUTCDATE())/(30.5*24*60*60.0) --days 30.5 avg of 30 and 31
于 2013-11-13T11:06:13.480 に答える
0

今日は私の誕生日です:)そして私はSELECT DATEDIFF(MONTH, '13 Nov 1963', GetDate())月齢です。おっと、すでにビールが多すぎます。

アップデート

DECLARE @birthdate datetime
DECLARE @months INT
SELECT @birthdate =  '13 Nov 1963'

SELECT @months = DATEDIFF(MONTH, @birthdate, GETDATE()) - CASE WHEN DAY(@birthdate) > DAY( GETDATE()) THEN 1 ELSE 0 END

SELECT  @months
于 2013-11-13T10:58:07.977 に答える