Sql 转换varchar值时转换失败';第四季度和第二十七季度;到数据类型int
运行此查询时,我遇到以下错误: 将varchar值“Q4”转换为数据类型int时,转换失败 我怎样才能修好它Sql 转换varchar值时转换失败';第四季度和第二十七季度;到数据类型int,sql,sql-server,Sql,Sql Server,运行此查询时,我遇到以下错误: 将varchar值“Q4”转换为数据类型int时,转换失败 我怎样才能修好它 谢谢操作员+超载了。当任何参数为数值时,它表示加法。当所有参数都是字符串时,表示字符串串联 datepart()返回一个数字,因此必须将其转换为字符值。就我个人而言,我更喜欢函数month(),而不是datepart(),因此: CREATE TABLE Persons ( PRE_DTR nvarchar(20), TR_PRE_DTR nvarchar(20) );
谢谢操作员
+
超载了。当任何参数为数值时,它表示加法。当所有参数都是字符串时,表示字符串串联
datepart()
返回一个数字,因此必须将其转换为字符值。就我个人而言,我更喜欢函数month()
,而不是datepart()
,因此:
CREATE TABLE Persons
(
PRE_DTR nvarchar(20),
TR_PRE_DTR nvarchar(20)
);
INSERT INTO Persons(PRE_DTR, TR_PRE_DTR)
VALUES ('10.12.2014', '');
INSERT INTO Persons(PRE_DTR, TR_PRE_DTR)
VALUES ('10.12.2014', '');
SELECT
PRE_DTR,
CASE
WHEN DATEPART(MONTH, PRE_DTR) IN (10, 11, 12)
THEN CONVERT(NVARCHAR(20), DATEPART(MONTH, PRE_DTR) + 'Q4')
END AS TR_PRE_DTR
FROM
Persons
你的查询很接近。但是在
convert()
之前,您正在执行+
。因此出现了错误,因为月份仍然是一个数字。运算符+
过载。当任何参数为数值时,它表示加法。当所有参数都是字符串时,表示字符串串联
datepart()
返回一个数字,因此必须将其转换为字符值。就我个人而言,我更喜欢函数month()
,而不是datepart()
,因此:
CREATE TABLE Persons
(
PRE_DTR nvarchar(20),
TR_PRE_DTR nvarchar(20)
);
INSERT INTO Persons(PRE_DTR, TR_PRE_DTR)
VALUES ('10.12.2014', '');
INSERT INTO Persons(PRE_DTR, TR_PRE_DTR)
VALUES ('10.12.2014', '');
SELECT
PRE_DTR,
CASE
WHEN DATEPART(MONTH, PRE_DTR) IN (10, 11, 12)
THEN CONVERT(NVARCHAR(20), DATEPART(MONTH, PRE_DTR) + 'Q4')
END AS TR_PRE_DTR
FROM
Persons
你的查询很接近。但是在
convert()
之前,您正在执行+
。因此出现了错误,因为月份仍然是一个数字。运算符+
过载。当任何参数为数值时,它表示加法。当所有参数都是字符串时,表示字符串串联
datepart()
返回一个数字,因此必须将其转换为字符值。就我个人而言,我更喜欢函数month()
,而不是datepart()
,因此:
CREATE TABLE Persons
(
PRE_DTR nvarchar(20),
TR_PRE_DTR nvarchar(20)
);
INSERT INTO Persons(PRE_DTR, TR_PRE_DTR)
VALUES ('10.12.2014', '');
INSERT INTO Persons(PRE_DTR, TR_PRE_DTR)
VALUES ('10.12.2014', '');
SELECT
PRE_DTR,
CASE
WHEN DATEPART(MONTH, PRE_DTR) IN (10, 11, 12)
THEN CONVERT(NVARCHAR(20), DATEPART(MONTH, PRE_DTR) + 'Q4')
END AS TR_PRE_DTR
FROM
Persons
你的查询很接近。但是在
convert()
之前,您正在执行+
。因此出现了错误,因为月份仍然是一个数字。运算符+
过载。当任何参数为数值时,它表示加法。当所有参数都是字符串时,表示字符串串联
datepart()
返回一个数字,因此必须将其转换为字符值。就我个人而言,我更喜欢函数month()
,而不是datepart()
,因此:
CREATE TABLE Persons
(
PRE_DTR nvarchar(20),
TR_PRE_DTR nvarchar(20)
);
INSERT INTO Persons(PRE_DTR, TR_PRE_DTR)
VALUES ('10.12.2014', '');
INSERT INTO Persons(PRE_DTR, TR_PRE_DTR)
VALUES ('10.12.2014', '');
SELECT
PRE_DTR,
CASE
WHEN DATEPART(MONTH, PRE_DTR) IN (10, 11, 12)
THEN CONVERT(NVARCHAR(20), DATEPART(MONTH, PRE_DTR) + 'Q4')
END AS TR_PRE_DTR
FROM
Persons
你的查询很接近。但是在convert()
之前,您正在执行+
。因此出现了错误,因为月份仍然是一个数字。您的语法是“SQL Server”,但问题的标签是“MySQL”。请适当标记您的问题。您的语法为“SQL Server”,但问题标记为“MySQL”。请适当标记您的问题。您的语法为“SQL Server”,但问题标记为“MySQL”。请适当标记您的问题。您的语法为“SQL Server”,但问题标记为“MySQL”。请适当标记您的问题。