SSMS创建视图报错求助:Msg 241日期与字符串转换失败
解决SSMS创建视图时的日期转换错误问题
嘿,一眼就看出问题出在哪了——你在WHERE子句里犯了个低级错误:把字符串类型的ArtistName(艺术家名字)和日期值做比较了!数据库肯定懵了,它没法把艺术家名字转换成日期来进行对比,这不就触发Msg 241的转换失败错误了嘛。
看你写的DATEADD(year, -10, GETDATE()),明显是想筛选近10年内发行的专辑对吧?那条件应该用Albums.ReleaseDate(专辑发行日期)才对,而不是艺术家名字。
给你修正后的完整代码:
CREATE VIEW RecentAlbums AS SELECT Artists.ArtistName, Albums.AlbumName, Albums.ReleaseDate, Genre.Genre FROM Albums INNER JOIN Artists ON Albums.ArtistId = Artists.ArtistId INNER JOIN Genre ON Albums.GenreId = Genre.GenreId WHERE Albums.ReleaseDate > DATEADD(year, -10, GETDATE());
额外给你两个小建议:
- 写查询条件时一定要注意字段类型匹配,这种隐式类型转换不仅会报错,还可能拖慢查询速度
- 如果你的
ReleaseDate字段允许存NULL值,建议在WHERE里加上AND Albums.ReleaseDate IS NOT NULL,避免把那些没有发行日期的无效数据也查出来
内容的提问来源于stack exchange,提问作者suji
相关产品推荐
相关产品推荐

