Ich versuche herauszufinden, wie das Student Alter in Alter + Monate zu konvertieren. Wenn zum Beispiel das Geburtsdatum eines Studenten 1/1/2000 war, dann würde das Schüleralter wie folgt aussehen: 16 und 6 MonateAlter Format - Jahr und Monat
Ich bin in der Lage, die Abfrage so zu skripten, dass das Schüleralter als ganze Zahl erscheint, aber bin nicht sicher, wie man dann die Monate einbezieht. Was muss ich ändern?
ALTER procedure [dbo].[RP_Student_Attendance] (@perf_code varchar(10))
as
-- set @perf_code = '3496A'
SELECT
i.short_name,
i.text1 as perf_desc,
i.text2 perf_dates,
i.text3 perf_times,
p.perf_no,
h.[Role],
h.customer_no,
c.sex, b.birthday,
g.grade_level,
--(DATEDIFF(yy,b.birthday,GETDATE())) as student_age,
student_age = CASE
WHEN dateadd(year, datediff (year, b.birthday, GETDATE()),b.birthday) > GETDATE()
THEN datediff (year, b.birthday, GETDATE()) - 1
ELSE datediff (year, b.birthday, GETDATE())end,
c.fname + ' ' + c.lname as student_name
FROM T_INVENTORY i
JOIN T_PERF p on i.inv_no = p.perf_no
JOIN T_TICKET_HISTORY h on p.perf_no = h.perf_no and [Role] = 4
JOIN T_CUSTOMER c on h.customer_no = c.customer_no
LEFT JOIN (select customer_no, key_value as birthday from TX_CUST_KEYWORD where keyword_no = 1) b on c.customer_no = b.customer_no
LEFT JOIN (select customer_no, key_value as grade_level from TX_CUST_KEYWORD where keyword_no = 428) g on c.customer_no = g.customer_no
WHERE p.perf_code = @perf_code