在SQL Server中转换日期的问题

时间:2016-03-31 16:24:01

标签: sql sql-server

我的数据中有一列充满了'日期'格式为030816并且数据类型为Varchar。我整个上午都在尝试将此号码转换为03/08/2016的日期格式。我似乎没有做任何事情给我预期的结果。以下是我尝试过的内容:

  • 我将列数据类型从Varchar更改为Date。这导致了更可接受的日期格式,但也导致完全更改日期。在此转换后,应该阅读03/08/2016的日期最后会显示2003-08-16
  • 我尝试将数据类型保留为Varchar,并在构建我的选择查询时使用Convert(Varchar(10),Bill_Date,103),但这没有导致任何更改,并继续将结果显示为030816
  • 我也尝试使用Cast(Bill_Date AS Date),但这也为我提供了2003-08-16的结果,这也是正确的日期。
  • 最后,我尝试了Format(Bill_Date,'MM/DD/YYYY'),但这给了我一条错误消息,声称Argument数据类型Varchar对于参数无效。

有没有办法让SQL将这个数字字符串转换为我需要的日期格式,或者至少有一种方法可以在select查询中显示数字字符串,它将为我提供我需要的格式?

3 个答案:

答案 0 :(得分:1)

'.20'

如果您的某些日期早于2000-01-01,则需要对特定数据集进行数学运算,以将'19'替换为{{1}}。

答案 1 :(得分:-1)

您需要将值转换为日期,而不是日期:

select Convert(date, Bill_Date, 3)

适当的格式似乎是" 3"。

如果之后需要字符串,可以使用101将其转换回MM / DD / YYYY格式。

答案 2 :(得分:-1)

CREATE TABLE SampleData( DescSample VARCHAR(10) )

INSERT INTO SampleData 价值观('030816')

SELECT LEFT(DescSample,2)+'/'+ SUBSTRING(DescSample,3,2)+'/'+'20'+ RIGHT(DescSample,2)

FROM SampleData

- 只是你想要的格式 - 你应该使用适当的年份格式。 -_-