【发布时间】:2015-04-01 07:30:18
【问题描述】:
我有这些数据:
Col1 Col2 Col3
2014-12-31 Q
2014-12-10 Q
CREATE TABLE Persons
(
Col1 varchar(50),
Col2 varchar(50),
Col3 varchar(20)
);
INSERT INTO Persons(Col1, Col2,Col3)
VALUES ('2014-12-20', 'Q','');
INSERT INTO Persons(Col1, Col2,Col3)
VALUES ('2014-12-10', 'Q','');
我运行这个查询:
select
convert(date, Col1,104) as Col1,
Col2,
case when Col2 = 'Q' then convert(nvarchar(10),year(Col1)+'Q0')
end as Col3
from Persons
我收到此错误:
从字符串转换日期和/或时间时转换失败
【问题讨论】:
-
你的意思是
year(Col4)而不是year(Col1)吗? -
有什么理由不使用
date?避免转换问题的最佳方法是使用正确的类型。 -
是的,对不起,我修好了。
-
另外,104 是 German 格式
dd.mm.yyyy。表示日期的最安全的字符串格式是 未分隔的 ISO 格式yyyymmdd。样式代码为 112。 -
您的问题从您决定将日期存储在 nvarchar 列中开始和结束。为您的数据使用正确的数据类型,您的问题就会得到解决。
标签: sql sql-server