Ich arbeite mit einer Tabelle, die StartDate und EndDate Felder hat. Ich muss einen Unterschied zwischen den Jahren finden.Erhalten Sie den Unterschied zwischen zwei Daten in Jahren
Beispiel: Startdate = 2017.01.01 EndDate = 12/31/2017
I Ergebnis erwarten = 1 für das Datum Unterschied.
Auch ich möchte es auf die nächste ganze Zahl runden.
Beispiel: Startdate = 2017.01.01 EndDate = 11/30/2017
I Ergebnis erwarten = 1 für das Datum Unterschied.
Mit der datediff-Funktion kann ich das Ergebnis erhalten, aber es wird nicht auf die nächste ganze Zahl gerundet.
Beispiel query: erhalte ich 6 Jahre, obwohl 65 Monate/12 wäre weniger als 5,5:
select (DATEDIFF(yy, '01/01/2016', '5/31/2021')
+ CASE WHEN abs(DATEPART(day, '01/01/2016') - DATEPART(day, '05/31/2021')) > 15 THEN 1 ELSE 0 END)
select (DATEDIFF(mm, '01/01/2016', '05/31/2021')
+ CASE WHEN abs(DATEPART(day, '01/01/2016') - DATEPART(day, '05/31/2021')) > 15 THEN 1 ELSE 0 END)
Haben Sie versucht, die 'ROUND' Funktion zu verwenden? – cwanjt
Ich habe runde Funktion versucht, aber es gibt 0 für obige Abfrage anstelle von 1 zurück. Ich möchte 0 sehen, wenn weniger als 0,5 zurückgegeben wird und 1, wenn mehr als 0,5 zurückgegeben. Ich kann entweder scheinen zu tun 1. – NonProgrammer
Ich habe gerade meinen Fehler erkannt. Ich habe die runde Funktion nicht korrekt verwendet: Ich denke, das wird funktionieren: Wähle Runde (1.3, 0) – NonProgrammer