2016-03-26 4 views
0

Ich möchte eine Abfrage schreiben Ich kann überprüfen, ob die Zahlung bis zum Zertifikatsdatum erfolgt ist.So erhalten Sie Datensätze basierend auf Monat und Jahr (Ignorieren Tag) - SQL Server

Zum Beispiel Ich habe zwei Spalten mit Datum.

CertificateDate : 2016-03-26 
LastPaymentDate : 2015-08-06 

In diesem Fall wird die Zahlung nicht als das Zertifikat bisher getan ist mehr als im letzten payment.So, wie ich diesen Zustand überprüfen kann, und ich will diesen Rekord.

CertificateDate : 2016-03-26 
LastPaymentDate : 2016-04-15 

In diesem Fall wird die Zahlung in meiner Abfrage-Ergebnisse erfolgt kommen, so sollte dies nicht.

Eine, die ich verwenden kann, ist datePart = Monat + Jahr, aber dann finde ich Schwierigkeiten, die < oder> Abfrage zu diesem Datensatz zu bekommen.

Frage: Ich möchte alle Datensätze erhalten, deren Zahlung nicht bis März 2016 erfolgt ist. Wenn das Zertifikat generiert wird, sollte die Zahlung bis zu diesem Zertifikat Datum sein.

Jede Hilfe wird geschätzt.

Antwort

0

Wenn Sie nur die Jahres- und Monatsabschnitte vergleichen möchten, können Sie die Datumsteilfunktionen verwenden. Es gibt eine einfache Methode:

where year(LastPaymentDate) * 100 + month(LastPaymentDate) <= 201603 

Aber ich denke, es ist sogar einfacher, nur Datumsberechnungen zu verwenden:

where LastPaymentDate < '2016-04-01' 

oder

where LastPaymentDate < dateadd(day, 1, '2016-03-31') 
Verwandte Themen