Sql server SQL Server表中的记录导致错误-如何查找该记录?
我创建了一个查询,以获取用户的出生日期,并将年份更改为当前年份(不希望显示实际的出生日期) 当我对我的表运行时,我得到以下错误:Sql server SQL Server表中的记录导致错误-如何查找该记录?,sql-server,date,casting,Sql Server,Date,Casting,我创建了一个查询,以获取用户的出生日期,并将年份更改为当前年份(不希望显示实际的出生日期) 当我对我的表运行时,我得到以下错误: Msg 241, Level 16, State 1, Line 1 Conversion failed when converting date and/or time from character string. 我能够使查询正确运行 为了对查询进行故障排除,我逐步完成了每个CAST()函数,每个函数都单独工作。当我将GETDATE()更改为birth时,查询工
Msg 241, Level 16, State 1, Line 1
Conversion failed when converting date and/or time from character string.
我能够使查询正确运行
为了对查询进行故障排除,我逐步完成了每个CAST()
函数,每个函数都单独工作。当我将GETDATE()
更改为birth
时,查询工作正常,但这与使用GETDATE()
不同。该函数将运行并通过大约400条记录,然后返回上面的错误消息
有没有办法找到导致这个问题的实际记录,或者有没有更好的办法把日期的月份和日期定为2013年?我认为闰年是你的问题,其中一个生日值是闰年的2月29日。因此发生错误是因为没有2013年2月29日 为了验证这一假设:
- 如果将
为硬编码字符串CAST(YEAR(GETDATE())替换为varchar)
,会发生什么情况'2013'
- 如果您将其替换为闰年
,会怎么样'2012'
- 或者,正如Niels Keurentjes在评论中巧妙地建议的那样,只需查询数据,看看是否有2月29日的生日
select*来自月(生日)=2天(生日)=29天的用户
生日
还是也包含NULL
值?@NielsKeurentjes它不是为所有用户设置的,所以我尝试了生日不为NULL的,结果相同。是2月29日的生日吗?没有2013年2月29日。如果您用硬编码字符串'2013'
替换CAST(YEAR(GETDATE())为varchar)
,会发生什么情况?@AdamPorad+1,没有想到2月29日。我们不妨使用select*from用户确认,其中月(生日)=2,天(生日)=29
。我从来没有想过。谢谢你在那件事上的帮助。
Msg 241, Level 16, State 1, Line 1
Conversion failed when converting date and/or time from character string.