В настоящее время у меня есть даты, хранящиеся в общем поле атрибута в базе данных в виде строки.SQL - преобразование строки в Date и сравнение - Ошибка преобразования при преобразовании даты и времени из символьной строки
Все они хранятся в формате DD/MM/YYYY
, например 01/01/2000
Я могу преобразовать их в их datetime
успешно, используя следующие в моем select
заявлении. Например, CONVERT(DATETIME, attribute.field_value, 103)
, где attribute.field_value
содержит дату.
Заявление SELECT
прекрасно работает и возвращает всю таблицу с ними правильно.
Я также могу вернуть столбец с датой сегодняшней в том же формате, как следует CAST(getdate() AS datetime)
Проблема возникает, когда я пытаюсь сравнить, теперь я только хочу, чтобы вернуть все, что новее, чем сегодня в псевдо код, который dateNewerThanToday > dateToday
Поэтому я попытался WHERE CONVERT(DATETIME, attribute.field_value, 103) > CAST(getdate() AS datetime)
это дает мне ошибку
Conversion failed when converting datetime from character string.
Я попробовал множество трансляций, чтобы заставить его работать. Я также обернул выбор, поэтому я делаю это только на наборе данных с правильными данными.
Любая помощь будет очень полезна! Спасибо заранее!!
Есть ли вероятность того, что одна из строк столбца 'attribute.field_value' содержит значение, отличное от конвертируемого. Попробуйте стрелять 'Выберите CONVERT (DATETIME, атрибут.field_value, 103) from attribute' и посмотреть, работает ли это. –
Определенно звучит как одна из ваших дат находится не в правильном формате. –
OP утверждает, что 'CONVERT' работает в' SELECT'. – NickyvV