Не могу найти, какая строка вызывает ошибку преобразования - PullRequest
2 голосов
/ 20 мая 2010

У меня есть следующая таблица:

CREATE TABLE [dbo].[Accounts1](
    [AccountId] [nvarchar](50) NULL,
    [ExpiryDate] [nvarchar](50) NULL
)

Я пытаюсь преобразовать nvarchar в datetime, используя этот запрос:

select convert(datetime, expirydate) from accounts

Я получаю эту ошибку:

Conversion failed when converting datetime from character string.

В строке состояния указано «2390 строк». Я иду в строки 2390, 2391 и 2392. Там нет ничего плохого с данными там. Я даже пытаюсь преобразовать эти конкретные строки, и это работает. Как я могу узнать, какие строки вызывают ошибку преобразования?

Ответы [ 2 ]

6 голосов
/ 20 мая 2010

Попробуйте:

SELECT * FROM [dbo].[Accounts1] WHERE ISDATE(ExpiryDate) = 0

Вот мой тестовый код:

CREATE TABLE #t( 
    [ExpiryDate] [nvarchar](50) NULL 
) 

insert into #t (ExpiryDate)
select '1/1/2010'

insert into #t (ExpiryDate)
select 'foo'

insert into #t (ExpiryDate)
select '2/1/2010'

select * from #t where ISDATE(ExpiryDate) = 0
-- returns 1 row

drop table #t
1 голос
/ 20 мая 2010

Эта таблица не имеет первичного ключа. В его отсутствие нельзя гарантировать, что средство просмотра таблицы и запрос работают в одном и том же порядке, поэтому 2390 означает разные строки. Как только первичный ключ создан, номер строки, отображаемый при выполнении запроса, будет соответствовать номеру строки в табличном представлении.

...