Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server表中的记录导致错误-如何查找该记录?_Sql Server_Date_Casting - Fatal编程技术网

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.