2016-11-28 5 views
0

Ich versuche, einen Vergleich auf der Basis von CreatedDate zu machen, aber es gibt mir einen Fehler wieUmwandlung von Datum in SQL Server

Die Umwandlung eines varchar-Datentypen auf einen Typen Datetime-Daten in einer aus resultierten

Hier ist meine Abfrage als @Startdate und @endDate sind meine Parameter für die gespeicherte Prozedur.

declare @startDate as varchar(100) = null 
declare @endDate as varchar(100) = null 
set @startDate = '01/11/2016' 
set @endDate = '30/11/2016' 

SELECT CreatedDate FROM Table1 
WHERE HCCreatedDate BETWEEN 
CONVERT(Datetime, ISNULL(@startDate,''), 103) 
    AND CONVERT(Datetime, ISNULL(@endDate,''), 103) 
+1

Überprüfen Sie Ihre HCCreatedDate Spalte datatype.Is es varchar oder Datumzeit datatype.Without wählen CreatedDate aus Tabelle 1, wo HCCreatedDate diese query.There ist kein Fehler – Mansoor

+0

ich denke, so zu diesem Datum '30/11/2016' Es dauert 30 als Monat und nicht als Datum –

+4

Verwenden Sie die richtigen Datentypen. Speichern Sie Daten niemals als Varchar. – jarlh

Antwort

1

konvertieren Bitte geben Sie die HCCreatedDate Spalte wie unten

declare @startDate as varchar(100) = null 
declare @endDate as varchar(100) = null 
set @startDate = '01/11/2016' 
set @endDate = '30/11/2016' 

SELECT 
    CreatedDate 
FROM 
    Table1 
WHERE 
    CONVERT(DATETIME,HCCreatedDate,103) BETWEEN CONVERT(DATETIME, ISNULL(@startDate,''), 103) AND CONVERT(DATETIME, ISNULL(@endDate,''), 103) 
0

Auch Ihre Spalte in Datetime ConVer. und versuchen Sie es erneut

declare @startDate as varchar(100) = null 
declare @endDate as varchar(100) = null 
set @startDate = '01/11/2016' 
set @endDate = '30/11/2016' 

SELECT CreatedDate FROM Table1 
WHERE CONVERT(DATETIME, HCCreatedDate), 103)BETWEEN 
CONVERT(DATETIME, ISNULL(@startDate,''), 103) 
    AND CONVERT(DATETIME, ISNULL(@endDate,''), 103)