繁体   English   中英

SQL Server:将varchar数字转换为日期

[英]SQL Server: Convert varchar numbers to date

是否可以将varchar数字转换为日期? 我正在从表中获取数据,并且希望将其转换为日期。 你能帮我解决这个问题吗? 最后一部分有错误:

从varchar数据类型到datetime数据类型的转换导致值超出范围。

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

正如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

这样尝试

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM