Case-Anweisung mit Datediff und DatePart

Kann jemand helfen mit einer case-Anweisung bitte, was ich brauche, ist die Abfrage zu zeigen ist die folgende. Ich weiß, es gibt Möglichkeiten, dies zu tun einfachere, aber ich brauche einfach Hilfe, die auf die Case-Anweisung.

--Wenn der Aktuelle Monat ist 'Weniger Als' der DOB Monat, dann nehmen Sie die '1' der Gesamten Jahre, um mir 41.
--Wenn der Aktuelle Monat ist 'Größer Als' das Geburtsdatum Monat dann das Alter stimmt.
--Allerdings, wenn der Aktuelle Monat ist "Gleich" an der DOB Monat dann müssen wir gehen auf Tag-Ebene, um das richtige Alter.

Set @DOB = '01 November 1971'
Set @Today = GETDATE()


SELECT Datediff(Year,@DOB,@Today) AS Years, 
Datepart(Month,@DOB) As DOB_Month, 
Datepart(Day, @DOB) as DOB_Day,
DatePart(Month, @Today) As Current_Month, 
Datepart(Day,@Today) AS Current_Day
  • was meinst du mit Total?
  • HI Iswanto ich meine, nehmen Sie 1 der Gesamtbetrag der Jahre.
  • Ich vermute, Sie möchten Holen Sie sich Alter..richtig?
  • Das ist richtig, Ta
  • Wie etwa this - und dieser?
  • Wie ich sagte, ich wurde gebeten, die Verwendung einer Case-Anweisung; so Etwas wie in diesem FALL, WENN DatePart(Month, @Today) < Datepart(Month,@DOB) THEN Datediff(Year,@Geburtsdatum@Heute) DANN -1 SONST DatePart(Month, @Heute) = Datepart(Month,@DOB) DANN Datepart(Tag,@Today) < Datepart(Tag, @DOB) THEN Datediff(Year,@Geburtsdatum@Heute) DANN -1 SONST ENDE

InformationsquelleAutor wafw1971 | 2013-03-04
Schreibe einen Kommentar