无法找到导致转换错误的行

时间:2010-05-20 06:32:24

标签: sql-server primary-key type-conversion

我有下表:

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 个答案:

答案 0 :(得分:6)

尝试:

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 :(得分:1)

此表没有主键。在缺席的情况下,表查看器和查询不能保证以相同的顺序操作,因此2390表示不同的行。创建主键后,运行查询时显示的行号将与表视图中的行号匹配。