2017-03-03 7 views
2

Ich habe an einer T-SQL-Abfrage gearbeitet, die jemand anderes geschrieben und gesehen hat.Datum in VARCHAR umwandeln und dann zurückschreiben

AND Cast(m.MeasurementDateTime as date) >= cast('''+cast(@StartDate as varchar(100)) + ''' as date) 
AND cast(m.MeasurementDateTime as date) <= cast('''+cast(@EndDate as varchar(100)) + ''' as date)' 

Warum sollte dies jemand tun? Fehle ich etwas? Es ist die gleiche Sache wie

CAST(@StartDate AS DATE) 

richtig? Die @EndDate und @StartDate stammen aus einem Bericht, so dass ich nicht den Quelldatentyp.

+1

Ihre Vermutung so gut wie jeder ist ..., wenn Sie sie direkt fragen können oder einige Beispieldaten (Eingänge und Tabellenwerte) haben mit dir zu spielen wird wahrscheinlich nie herausfinden. – Igor

Antwort

3

Können Sie @StartDate drucken, um das Format zu sehen? Wenn es ein Integer-Format zum Beispiel hat können wir werfen sie nicht direkt auf ein Datum:

select cast(20031016 as date) 
Explicit conversion from data type int to date is not allowed. 

select cast(cast(20031016 as varchar) as date) 
16.10.2003 00:00:00 
+1

Netter Anwendungsfall. Schreckliches, schreckliches Datenmodell, wenn sie @startDate als int verwenden, aber auf jeden Fall sicher. +1 von mir. – scsimon