Sql 转换为mm/dd/yyyy格式

Sql 转换为mm/dd/yyyy格式,sql,sql-server-2008,tsql,converter,Sql,Sql Server 2008,Tsql,Converter,我有一个名为SF_Data的表,还有一个名为IN_Date的列,ID数据如下所示: ID IN_Date 1 9/8/2010 2 26/04/2011 3 20/09/2010 IN_Date的数据类型为varchar(50) 我正在尝试将输入日期转换为mm/dd/yyyy格式。我试着这样做: Select convert(varchar,IN_Date,103) From dbo.SF_Data 但格式仍然没有改变。谁能告诉我哪里出了问题当从

我有一个名为SF_Data的表,还有一个名为IN_Date的列,ID数据如下所示:

ID      IN_Date
1       9/8/2010
2       26/04/2011
3       20/09/2010
IN_Date的数据类型为varchar(50)

我正在尝试将输入日期转换为mm/dd/yyyy格式。我试着这样做:

Select convert(varchar,IN_Date,103) From dbo.SF_Data

但格式仍然没有改变。谁能告诉我哪里出了问题

当从
varchar
转换为
varchar
时,转换为
convert
的第三个参数没有意义。因此,根据@marc_s的评论,您必须使用103格式将
varchar
转换为
datetime
,然后从
datetime
转换为
varchar
指定101格式:

Select convert(varchar(12),convert(datetime,IN_Date,103),101) From dbo.SF_Data
例如:

select convert(varchar(12),convert(datetime,'31/12/2001',103),101)
打印
12/31/2001


在格式化之前,您需要转换以修复数据(到正确的数据类型)

Select
     convert(varchar,
         convert(date, IN_Date, 103),
     101)
from dbo.SF_Data

如果是日期-为什么不是
DATETIME
??那会让事情变得简单多了@GBN该表是由其他人创建的更改列数据类型!!从长远来看,你会为自己省去很多痛苦…….是的-但首先它是一个VARCHAR-它需要先转换为
DATETIME
,然后再转换回VARCHAR(以不同的格式)。它会给我以下错误消息102,级别15,状态1,第1行“101”附近的语法不正确。@Peter-只是缺少一个逗号,固定的it@Peter:Joel修复了我的语法,缺少逗号。哎呀。