我有下表:
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行。那里的数据没有任何问题。我甚至尝试转换那些特定的行,它的工作原理。如何找出导致转换错误的行?
答案 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表示不同的行。创建主键后,运行查询时显示的行号将与表视图中的行号匹配。