创建PROGRAMMER表插入日期值时遇int与date类型冲突错误求助
解决日期类型冲突问题
错误原因
插入日期时使用1966/04/12这类写法,SQL Server会将其识别为数值除法运算(1966 ÷ 4 ÷ 12),最终得到一个整数结果。而表中DOB和DOJ列的类型是DATE,整数无法直接转换为日期类型,因此触发类型冲突错误。
修正后的插入语句
需将日期值用单引号包裹,作为字符串字面量传入。推荐使用'yyyy-MM-dd'格式,该格式不受系统日期设置影响,能被SQL Server稳定识别:
INSERT INTO PROGRAMMER VALUES ('ANAND', '1966-04-12', '1992-04-21', 'M', 'PASCAL', 'BASIC', 3200)
按期望格式查询结果
若要以12-Apr-66格式显示日期,可使用CONVERT函数指定格式代码,再通过REPLACE函数调整分隔符:
SELECT PNAME, REPLACE(CONVERT(VARCHAR, DOB, 6), ' ', '-') AS DOB, REPLACE(CONVERT(VARCHAR, DOJ, 6), ' ', '-') AS DOJ, GENDER, PROF1, PROF2, SALARY FROM PROGRAMMER
其中格式代码6对应输出dd mon yy,替换空格为连字符后即可得到你想要的12-Apr-66样式。
内容的提问来源于stack exchange,提问作者Prakhar Srivastava
相关产品推荐
相关产品推荐

