我想我已經閱讀了關於這個主題的每一個線索,他們都沒有解決我的問題。Casting varchar as date
首先,我正在使用的數據庫將所有日期字段設置爲varchar數據類型,這使我瘋狂,因爲每當我處理任何涉及日期的查詢時,我都必須進行轉換或轉換。
我現在正在處理的查詢應該拉出所有具有特定診斷的醫療患者列表,但診斷必須在特定日期之前給出。這是我得到的。
SELECT DISTINCT
pd.PatientID,
pd.PatientName,
pmh.DateOfOnset
pmh.DiagnosisCode
FROM PatientDemographic pd JOIN PatientMedicalHistory pmh ON pd.PatientID = pmh.PatientID
WHERE pmh.DiagnosisCode = '401.1'
AND CAST(pmh.DateOfOnset as Date) > CAST('12/31/2014' as Date)
我收到說"Conversion failed when converting date and/or time from character string."
它告訴我的錯誤是在1號線雖然(在SELECT DISTINCT
線),所以這不是真正的幫助,我不知道我需要修復的錯誤。
正如我所提到的,DateOfOnset
字段有一個varchar數據類型,我需要找到2014年12月底之前發佈的任何日期。我試圖通過嘗試不同的組合來解決這個錯誤CAST
聲明 - 我甚至嘗試在SELECT
聲明中的日期字段中包含一個強制轉換,並且我仍然收到相同的錯誤。
我是工作在早些時候的另一項查詢,需要我從某一個時間框架內找到所有病人預約,併爲查詢,我有我的WHERE
條款設置,如:
WHERE Cast(VisitDate as Date) BETWEEN CAST('01/01/2014' as Date) AND CAST('12/01/2014' as Date)
...它工作得很好。由於我使用幾乎相同的方式設置了當前的查詢,所以我不確定爲什麼我會收到該轉換錯誤。
可能您在pmh.DateOfOnset中有無效日期 – FLICKER
錯誤發生在第1行,因爲第1行是包含錯誤的語句的開頭。運行select語句時發生錯誤。 – GendoIkari
可能是一種文化的東西。 12/31可能會被解釋爲31/12 –