wie, um die Anzahl an Monaten zwischen zwei Datumsangaben in sql server 2005
Ich habe eine Spalte in meiner sql server 2005-Tabelle zu halten sollte die Anzahl der Monate ein Mitarbeiter im Dienst.
Da ich auch das Datum, der Mitarbeiter beschäftigt war, möchte ich die "months_In_Service" - Spalte eine berechnete Spalte ist.
Nun, wenn ich DATEDIFF(month,[DateEngaged],GETDATE())
wie die Formel für die Monate im Dienst berechnete Spalte, die Ergebnisse sind richtig einige Zeit und andere mal falsch.
Was wäre die bessere zuverlässigen Weg, um die Anzahl der Monate zwischen den DateEngaged Wert und dem aktuellen Datum? Welche Formel soll ich verwenden in meinem berechnete Spalte?
Könnten Sie ein paar Beispiele von dem, was Sie meinen, wenn Sie sagen, dass Sie manchmal richtig und manchmal nicht.
Könntest du bitte neu taggen, dieser (edit) und sql-server-2005 (oder auch nur sql-server)? Beachten Sie die Bindestriche. Es gibt user hier, die ignorieren, SQL-Server Fragen (nicht Ihre know-how), sondern sind daran interessiert, SQL Fragen.
DateEngaged = '12/20/2009" CurrentDate = '1/13/2010" Das gibt mir Monate im Dienst als 1 mit formular "datediff(month,[DateEngaged],getdate()+(1))" Es gibt auch Jahre im Dienst als 1 mit der Formel "datediff(year,[DateEngaged],getdate()+(1))"
Und was für ein Ergebnis erwartest du?
Könntest du bitte neu taggen, dieser (edit) und sql-server-2005 (oder auch nur sql-server)? Beachten Sie die Bindestriche. Es gibt user hier, die ignorieren, SQL-Server Fragen (nicht Ihre know-how), sondern sind daran interessiert, SQL Fragen.
DateEngaged = '12/20/2009" CurrentDate = '1/13/2010" Das gibt mir Monate im Dienst als 1 mit formular "datediff(month,[DateEngaged],getdate()+(1))" Es gibt auch Jahre im Dienst als 1 mit der Formel "datediff(year,[DateEngaged],getdate()+(1))"
Und was für ein Ergebnis erwartest du?
InformationsquelleAutor StackTrace | 2010-01-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Etwas wie (möglicherweise müssen swap die 1 und 0, ungetestet)
DATEDIFF Maßnahme Monats Grenzen, zB 00:00 am 1. eines jeden Monats, nicht Tag-des-Monats-Jubiläen
Edit: nachdem ich die OP ' s Kommentar, Sie müssen subtrahieren Sie 1, wenn das start-Tag > Ende Tag
So 20 Dez-13 Jan, DATEDIFF gibt 1 und dann 20 > 13 so 1 subtrahieren = null Monate.
Haben Sie sich jemals testen was passiert, wenn die Mitarbeiterin am 31. Oktober und das aktuelle Datum wurde der 30. November? Diese routine gibt 0 zurück, Monate, aber in der Tat, auf nahezu jede fachliche Anforderung kann ich mir vorstellen, würde sagen, dass ist ein Monat. Fand diese Suche nach einer Lösung für das problem. Noch auf der Suche......
Nicht eine geniale Lösung zu dem, was @Ron erklären?
InformationsquelleAutor gbn
Gleichen Ansatz wie gbn, aber mit weniger Tastenbetätigungen 🙂
InformationsquelleAutor Frank Kalis
Vielleicht möchten Sie so etwas wie:
InformationsquelleAutor My Other Me
Wenn Sie vermuten, dass Monat bedeutet 30 Tage lang können Sie auch Runde vale
Diese sich immer weiter heraus, wie die Zeit vergeht. Nach 6 Jahren, der Fehler ist einen ganzen Monat, garantiert
InformationsquelleAutor adopilot