是否可以将varchar数转换为日期?我从表中获取数据,我希望它转换为日期。你能帮我搞清楚吗? 最后一部分有错误:
将varchar数据类型转换为日期时间数据类型会导致超出范围的值。
declare @year varchar(6)
declare @month varchar(2)
declare @test varchar (8)
set @year = right(left('F20160316-1000',5),4)
select @year
set @month = right(left('F20160316-1000',7),2)
select @month
set @test = @month +''+ @year
select @test
SELECT CONVERT (DATETIME, CONVERT(varchar(12),@test))
无论如何,我想要达到的结果是MAR2016
。
答案 0 :(得分:2)
你存储和转换的方式并不像Jarlh指出的那样好。你可以使用datetimefrom部件来获取输出,在你的情况下缺少日期,我添加它..
declare @year varchar(6)
declare @month varchar(2)
declare @day varchar (8)
set @year = right(left('F20160316-1000',5),4)
set @month = right(left('F20160316-1000',7),2)
Set @day=right(left('F20160316-1000',5),2)
select datetimefromparts(@year,@month,@day)
如果您的字符串模式相同,您也可以这样做..
declare @string varchar(15)
set @string='F20160316-1000'
select convert(datetime,substring(@string,2,charindex('-',@string,1)-2)
<强>输出:强> 2016-03-16 00:00:00.000
答案 1 :(得分:1)
试试这个,
DECLARE @year VARCHAR(6)
DECLARE @month VARCHAR(2)
DECLARE @test VARCHAR(8)
SET @year = right(left('F20160316-1000', 5), 4)
SET @month = right(left('F20160316-1000', 7), 2)
SET @test = @year + @month + '01'
SELECT UPPER(CONVERT(VARCHAR(3), DATENAME(MM, @test), 100)) + @year AS MonthYear