简体   繁体   English

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

[英]SQL Server: Convert varchar numbers to date

Is it possible to convert a varchar numbers to date? 是否可以将varchar数字转换为日期? I am fetching data from a table and I want it converted into date. 我正在从表中获取数据,并且希望将其转换为日期。 Can you help me figure this out? 你能帮我解决这个问题吗? There is an error on the last part: 最后一部分有错误:

The conversion of a varchar data type to a datetime data type resulted in an out-of-range value. 从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))

Anyway, the the result that I want to achieve is MAR2016 . 无论如何,我要达到的结果是MAR2016

The way you are storing and converting is not good as Jarlh pointed out.You could use datetimefrom parts to get output ,in your case day is missing ,i added it.. 正如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)

further if your string pattern is same ,you can do this as well.. 此外,如果您的字符串模式相同,您也可以这样做。

declare @string varchar(15)
set @string='F20160316-1000'
select convert(datetime,substring(@string,2,charindex('-',@string,1)-2)

Output: 2016-03-16 00:00:00.000 输出: 2016-03-16 00:00:00.000

Try like this, 这样尝试

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