Резолюция к этому лежит в том, чтобы точно знать, каков фактический тип данных для каждого поля.
Вы указали, что LC_YEAR является десятичным, а DATE
- дата и время;
Но вы также указали, что «формат» DATE
равен mm/dd/yyyy hh: mm: ss: mmm, если тип данных равен datetime, тогда формат не имеет значения, если это поле является varchar, тогда формат имеет значение. Таким образом, доступная информация немного запутанна. Вот некоторые идеи для конверсии.
`LC_YEAR` `DATE`
data Type data type
decimal datetime LC_YEAR = YEAR(`DATE`)
varchar datetime LC_YEAR = CAST(YEAR(`DATE`) AS VARCHAR)
varchar varchar LC_YEAR = CAST(YEAR(str_to_time(`DATE`,'mm/dd/yyyy hh:mm:ss:mmm')) AS VARCHAR)
decimal varchar LC_YEAR = YEAR(str_to_time(`DATE`,'mm/dd/yyyy hh:mm:ss:mmm'))
В идеале вы не должны были бы присоединиться с участием преобразования типов данных
Почему бы вы сравнение года к DateTime в любом случае? Это бессмысленно. Должны ли вы извлекать годовую часть даты? И ваше сообщение указывает, что 'DATE' на самом деле является' varchar', который не содержит значения, которое может быть преобразовано в дату? – Turophile
Я понятия не имею, что такое 'LC_YEAR()', но я подозреваю, что вы не задаете правильного вопроса на всех преобразованиях между форматами очень толстый предмет. Вы случайно хотите определить, принадлежит ли дата к данному году? –