我在SQL服务器中有一个表项目,其中的字段为StartDate,其值为
15-02-2013 15:02:40
20-08-2011 10:11:20
等
我需要从中检索不同的年份值
仅2013 and 2011
我试过像
select (case when charindex(' ', StartDate) > 0
then left(StartDate, charindex(' ', (StartDate))-1)
else StartDate
end) as StartDate FROM [kneipp].[dbo].[kn_projects]
将结果显示为 15-02-2013 and 20-08-2011
和
select (case when charindex('-', StartDate) > 0
then right(StartDate, charindex('-', reverse(StartDate))-1)
else StartDate
end) as lastone FROM [kneipp].[dbo].[kn_projects]
得到 2013 15:02:40 and 2011 10:11:20
如何实现我的预期结果
答案 0 :(得分:1)
SELECT distinct year( convert(datetime,StartDate,105))
FROM [kneipp].[dbo].[kn_projects]
答案 1 :(得分:0)
您可以将列转换为DATETIME格式
SELECT YEAR(CAST(StartDate AS DATETIME)) FROM [kneipp].[dbo].[kn_projects]
答案 2 :(得分:0)
正如其他人指出您可以转换为datetime,如果您想保留数据类型,请尝试以下查询
Declare @t varchar(50),@t1 varchar(50)
set @t='15-02-2013 15:02:40'
Select left(parsename(replace(@t,'-','.'),1),4)
如果您有任何格式的日期时间,请尝试以下表达式,该表达式将返回varchar数据类型中的年份
Select left(parsename(replace(@t1,'-','.'),1),
charindex(' ',parsename(replace(@t1,'-','.'),1)))