簡體   English   中英

DATEDIFF和COUNT

[英]DATEDIFF and COUNT

我想按當前年齡計算2010年以來注冊的所有學生。

16-2
17-5
19-5

在當前的“學生”表中,我有學生的DOB和registration_date。 我正在使用Management Studio。

到目前為止,我有:

SELECT COUNT (*) 
FROM db.student 
WHERE DATEDIFF(year, DOB, CURRENT_TIMESTAMP) AND registration_date >= '2010-01-01'

但不知道從這里去哪里。

先感謝您。

嘗試這個。

select DATEDIFF(Year,DOB,CURRENT_TIMESTAMP) age,Count(ID) users from dbo.student  where DatePart(year,registration_date)>=2010
GROUP BY  DATEDIFF(Year,DOB,CURRENT_TIMESTAMP)

您可能需要GROUP BY。 大概是這樣的嗎?

SELECT DATEDIFF(year, DOB, CURRENT_TIMESTAMP), COUNT (*) FROM db.student 
WHERE registration_date >= '2010-01-01'
GROUP BY DATEDIFF(year, DOB, CURRENT_TIMESTAMP)

要獲得准確的年齡,您需要考慮年,月和日。

要獲得按年齡分類的學生人數,您的代碼應為:

SELECT
   Datediff(yyyy,DOB, CURRENT_TIMESTAMP)
    +   Case 
            When
            (
                    Datepart(mm,DOB) > Datepart(mm,CURRENT_TIMESTAMP)
                Or  (
                            Datepart(mm,DOB) = Datepart(mm,CURRENT_TIMESTAMP)
                        And Datepart(dd,DOB) > Datepart(dd,CURRENT_TIMESTAMP) 
                    )
            )
            Then -1
            Else 0
        End As Age,
   Count(*)
FROM
   db.student 
WHERE
   registration_date >= '2010-01-01'    SELECT
   Datediff(yyyy,DOB, CURRENT_TIMESTAMP)
    +   Case 
            When
            (
                    Datepart(mm,DOB) > Datepart(mm,CURRENT_TIMESTAMP)
                Or  (
                            Datepart(mm,DOB) = Datepart(mm,CURRENT_TIMESTAMP)
                        And Datepart(dd,DOB) > Datepart(dd,CURRENT_TIMESTAMP) 
                    )
            )
            Then -1
            Else 0
        End As Age,
   Count(*)
FROM
   db.student 
WHERE
   registration_date >= '2010-01-01'
GROUP BY
   Datediff(yyyy,DOB, CURRENT_TIMESTAMP)
    +   Case 
            When
            (
                    Datepart(mm,DOB) > Datepart(mm,CURRENT_TIMESTAMP)
                Or  (
                            Datepart(mm,DOB) = Datepart(mm,CURRENT_TIMESTAMP)
                        And Datepart(dd,DOB) > Datepart(dd,CURRENT_TIMESTAMP) 
                    )
            )
            Then -1
            Else 0
        End

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM