SQL Server-Datumsvergleiche nur basierend auf Monat und Jahr
Ich habe Probleme, die beste Methode zum Vergleichen von Daten in SQL basierend auf Monat und Jahr zu ermitteln.
Wir berechnen nach Datum und da die Abrechnung monatlich erfolgt, hat das Datum des Monats mehr Hindernisse verursacht.
Beispielsweis
DECLARE @date1 DATETIME = CAST('6/15/2014' AS DATETIME),
@date2 DATETIME = CAST('6/14/2014' AS DATETIME)
SELECT * FROM tableName WHERE @date1 <= @date2
Das obige Beispiel würde keine Zeilen zurückgeben, da @ date1 größer als @ date2 ist. Also würde ich gerne einen Weg finden, den Tag aus der Gleichung herauszunehmen.
Ebenso betrübt mich die folgende Situation aus demselben Grund.
DECLARE @date1 DATETIME = CAST('6/14/2014' AS DATETIME),
@date2 DATETIME = CAST('6/15/2014' AS DATETIME),
@date3 DATETIME = CAST('7/1/2014' AS DATETIME)
SELECT * FROM tableName WHERE @date2 BETWEEN @date1 AND @date3
Ich habe die Daten inline konvertiert, um den ersten und den letzten Tag des Monats für das angegebene Datum abzuleiten.
SELECT *
FROM tableName
WHERE date2 BETWEEN
DATEADD(month, DATEDIFF(month, 0, date1), 0) -- The first day of the month for date1
AND
DATEADD(s, -1, DATEADD(mm, DATEDIFF(m, 0, date2) + 1, 0)) -- The lastday of the month for date3
Es muss einen einfacheren Weg geben, dies zu tun. Irgendwelche Vorschläge