2016-10-18 3 views
1

Für mein AgingCalendar Feld habe ich 3 Bedingungen mit CASE WHEN:AgeCalendar Datetime-Feld Ausgabe

CASE WHEN A.[END_DTTM] > A.[STRT_DTTM] THEN C2.[DY_OF_CAL_NUM] - C1.[DY_OF_CAL_NUM] 
     WHEN A.[END_DTTM] IS NULL and A.[STRT_DTTM] IS NOT NULL THEN C3.[DY_OF_CAL_NUM] - C1.[DY_OF_CAL_NUM] 
     WHEN A.[END_DTTM] = A.[STRT_DTTM] THEN 1 
    END AS AgeCalendar 

Für meine dritte Bedingung, ich bin im Grunde versucht zu sagen, wenn das Ende für Datum und Uhrzeit = Start für Datum und Uhrzeit, das Alter in Kalendertage sollten auf 1 Kalendertag festgelegt werden.

In einigen der Datensätze, die ich einbringe, ist das Startdatum gleich dem Enddatum, aber die Zeiten, die jedem Datum zugeordnet sind, sind unterschiedlich. Wenn dies geschieht, erhalten diese Datensätze im Feld AgeCalendar einen NULL-Wert (zum Beispiel könnte ich 6/6/2014 0:00:00 = 6/6/2014 0:00:00 haben, und das ergibt 1. ..aber wenn ich 6/6/2014 0:00:00 = 6/6/2014 0:03:59 (oder so ähnlich) hätte ... würde ich einen NULL-Wert bekommen, weil es nicht zusammenpasst. wie kann ich den oben stehenden Code aktualisieren, so dass ich im Grunde bin zu sagen, wenn End Date = Datum Start, dann 1 ... unabhängig von nicht passenden Zeiten mit?

Antwort

1

CAST oder CONVERT sie als Termin die Zeit zu ignorieren.

WHEN CONVERT(DATE, A.[END_DTTM]) = CONVERT(DATE, A.[STRT_DTTM]) THEN 1

ODER

WHEN CAST(A.[END_DTTM] AS DATE) = CAST(A.[STRT_DTTM] AS DATE) THEN 1

+0

Ich wusste, dass es einfach sein musste, aber zeichnete sich leer. Danke @scsimon. – smul86

+0

keine Sorgen überhaupt @ smul86 – scsimon