在SQL Server中将日期从1980-12-17 00:00:00.000改为17-Dec-80报错求助
解决SQL Server修改日期字段时的"Invalid column name 'Dec'"错误
你遇到的这个报错原因其实很直白:你没给日期字符串加单引号。SQL Server会把17-Dec-80当成数学运算式——也就是17减去名为Dec的列再减去80,但你的表根本没有叫Dec的列,自然就抛出错误了。
正确的UPDATE语句写法
把目标日期用单引号括起来,让SQL Server识别成日期字符串就行:
UPDATE emp SET HIREDATE = '17-Dec-80' WHERE EMPNO = 7369;
更稳妥的写法(避免格式解析坑)
如果你的SQL Server实例的日期格式设置不兼容DD-Mon-YY这种写法,可能还会出现日期解析失败的问题。这种情况下,推荐用显式转换指定格式代码,彻底避免歧义:
UPDATE emp SET HIREDATE = CONVERT(DATETIME, '17-Dec-80', 106) WHERE EMPNO = 7369;
这里的106是SQL Server对应DD Mon YY格式的专用代码,能精准解析你提供的日期字符串。
额外提醒
SQL Server里日期/时间类型的值是按二进制格式存储的,显示格式只和查询时的设置有关。如果你只是想让查询结果以17-Dec-80的形式展示,完全没必要修改存储的值,查询时转换格式就行:
SELECT FORMAT(HIREDATE, 'dd-MMM-yy') AS HIREDATE_FORMATTED FROM emp WHERE EMPNO = 7369;
内容的提问来源于stack exchange,提问作者Diwakar Yadav
相关产品推荐
相关产品推荐

