Преобразование даты NVARCHAR в DATETIME с использованием CHARINDEX - PullRequest
0 голосов
/ 18 сентября 2018

При попытке преобразовать столбец nvarchar в datetime я получаю следующую ошибку.

Select *
from table 1
where
convert(datetime, col1) >= '2018-08-29 00:00:00.000'

Сообщение об ошибке

Преобразование типа данных varchar в тип данных datetimeпривело к значению вне допустимого диапазона.

Col1 - столбец NVARCHAR (я не контролирую этот тип данных, поэтому не могу его изменить)

Я видел несколько примеровиз charindex, но, похоже, не может заставить его работать, любая помощь в получении правильного кода для работы высоко ценится

ОБНОВЛЕНИЕ - '2018-08-29 00: 00: 00.000' - это столбец даты и времени, который должен остаться, чтобы выполнить предложение where.

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Вы можете определить SET DATEFORMAT YMD перед началом запроса. посмотрите запрос ниже,

SET DATEFORMAT YMD
Select *
from table 1
where
convert(datetime, col1) >= '2018-08-29 00:00:00.000'
0 голосов
/ 18 сентября 2018

Используйте try_convert():

Select *
from table 1
where try_convert(datetime, col1) >= '2018-08-29'  -- time is not necessary

Чтобы найти значения, вызывающие проблему:

select col1
from t
where try_convert(datetime, col1) is null and col1 is not null;

Примечание. Для преобразования может потребоваться аргумент формата.В конце, однако, вы должны исправить ваши данные, чтобы использовать правильный тип для col1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...