我有下表:

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行。那里的数据没有错。我什至尝试转换那些特定的行,并且它可以工作。我如何找出导致转换错误的行?

最佳答案

尝试:

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

关于sql-server - 找不到导致转换错误的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2871478/

10-10 19:33