簡體   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