-1

を使用してゲームに参加したプレーヤーの日付を保存するテーブルがありますgameId and UserId

ここで、各ユーザーがゲームをプレイしてからの時間を計算する必要があります。

テーブルスキーマは次のとおりです

create table  GameUser

(
   UserId int identity(1,1) not null, 
   UserName nvarchar(500)

)

insert into GameUser SELECT 'rahul'
insert into GameUser SELECT 'yunus'
insert into GameUser SELECT 'nitin'


Create table GameEntry 
 (
    EntryId int identity(1,1) not null,
    GameId int , 
    UserId int , 
    EntryDate smalldatetime

 )


insert into GameEntry SELECT 1,1,'01/01/2009'
insert into GameEntry SELECT 1,2,'05/01/2009'
insert into GameEntry SELECT 1,3,'12/01/2009'
insert into GameEntry SELECT 2,1,'01/01/2010'
insert into GameEntry SELECT 2,3,'01/01/2013'

テーブルスキームとテストデータを使用したSQLFIDDELE

期間の結果列は次のようになります2 years 2 months and 15 days or3 monthsまたは5 months 15 daysor9 days

私はすでにSOで年齢計算の質問をチェックしていますが、もっと複雑です。

4

2 に答える 2

1

あなたはこのようなことをすることができます:

Declare @DOB DateTime
DECLARE @yy INT
DECLARE @mm INT
DECLARE @getdd INT
DECLARE @dd INT

SET @DOB='2011-10-11 00:00:00.000'

SET @yy = DATEDIFF(mm, @DOB, GETDATE())/12
SET @mm = DATEDIFF(mm, @DOB, GETDATE())%12 - 1
SET @dd = ABS(DATEDIFF(dd, DATEADD(mm,@mm , DATEADD(yy, @yy, @DOB)), GETDATE()))

SELECT Convert(varchar(10),@yy) + ' Years ' + Convert(varchar(10),@mm) + ' Months '  + Convert(varchar(10),@dd) + ' Days '
于 2013-03-06T07:00:33.343 に答える
-1

あなたはこのようなことをすることができます。年、月、日で日付を返します。

SELECT CAST(DATEDIFF(yyyy, Max(EntryDate), GETDATE()) AS VARCHAR) + ' years, ' 
     + CAST(DATEDIFF(mm, Max(EntryDate), GETDATE()) AS VARCHAR) + ' months, ' 
     + CAST(DATEDIFF(dd, Max(EntryDate), GETDATE()) AS VARCHAR) + ' days', 
     GE.userId
FROM
    GameEntry AS GE
GROUP BY
    GE.userId
于 2013-03-04T06:13:12.267 に答える