2016-06-09 7 views
1

ich folgenden Code & im geschrieben haben versucht, diese Tabelle für die Zeilen zwischen einem bestimmten Zeitraum zu suchen:Probleme ein Zeichen zu Datetime-Konvertierung

SELECT 'RWH' + P.Hospital_Number AS MRN, 
     P.Date_of_birth, 
     pd.Clinic_date AS Date_Seen, 
     pd.Clinic_type_No 
FROM (Patient_diabetes AS pd 
INNER JOIN Patients AS p ON pd.Patient_No = p.Patient_No) 
INNER JOIN Staff AS s ON pd.Seen_by1_No = s.Staff_No 
WHERE (((pd.Clinic_type_No)=241)) 
--AND hospital_number like '%63028%' 
AND CONVERT(datetime,pd.Clinic_Date,121) BETWEEN '02/04/2015' AND '24/09/2015' 
ORDER BY p.Date_of_birth, 
pd.Clinic_date DESC 

Aber ich erhalte die folgende Störung, irgendwelche Ideen, wie dieses Problem beheben? :

Msg 242, Stufe 16, Zustand 3, Zeile 2 Die Umwandlung eines char Datentypen mit einem Datumsdatentyp ergab einen out-of-range Datetime-Wert.

+0

was ist der Datentyp von clinic_date? –

+0

Die Fehlermeldung ist sehr klar - Sie haben einige "pd.Clinic_Date" -Werte, die nicht korrekt formatiert sind, so dass sie von SQL Server in 'DateTime' konvertiert werden können. Genau deshalb sollten Sie keine Daten als "char" speichern. – Siyual

+0

Welche Version von SQL Server verwenden Sie? – Siyual

Antwort

1

ich Ihnen vorschlagen zu ändern:

AND CONVERT(datetime,pd.Clinic_Date,121) BETWEEN '02/04/2015' AND '24/09/2015' 

Um dies:

AND CONVERT(date,pd.Clinic_Date,121) BETWEEN '2015-04-02' AND '2015-09-24' 
1

Ich denke, das Problem hier in der BETWEEN '02/04/2015' AND '24/09/2015'

standardmäßig '24/09/2015' wandelt in "mm/dd/yyyy" Formatdaten. Also gibt es keinen 24. Monat.

Versuchen Sie explizit das Format String-Daten zeigen:

BETWEEN CONVERT(datetime,'02/04/2015',103) 
    AND CONVERT(datetime,'24/09/2015',103) 
Verwandte Themen