2013-04-17 74 views
0

我有一个日期列在yyyy-mm-dd我想将其转换为dd/mm/yyyyy。此列的数据类型为nvarchar(20)。我愿意更改数据类型。我试过的查询是Tsql日期列更新

Update table1 
set Column1= Convert(nvarchar(10),column1,101). 

它正在执行,但没有做任何改变。

+0

如果你愿意改变的数据类型,为什么不直接将其更改为'date'或'日期时间'?那么你不必担心格式,所有的日期函数都能正常工作。 – Pondlife

+0

[不良习惯踢:选择错误的数据类型](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/12/bad-habits-to-kick-using-the-wrong-data- type.aspx) - 您应该始终使用最合适的数据类型 - 这就是它们的用途 –

+0

是的先生。谢谢你 – knahs

回答

0

您需要的值转换两次,

Update table1 
set Column1 = CONVERT(nvarchar(10),CONVERT(datetime, REPLACE(column1,'-','.'), 102), 103) 
+0

谢谢JW。它的工作,我只是改变了102到101的格式,我正在寻找。 – knahs

+0

不客气':D' –

3

您的数据不是真的是的日期。它目前是一个字符串,所以Convert不会有任何影响。

你将需要:

update table1 set Column1 = Convert(nvarchar(10), Convert(datetime, column1), 101)

,但更好的是,你应该考虑改变列的数据类型为datetime,然后convert至来所需格式时,从表中你select数据。

+0

谢谢你的帮助查询工作,但更新列到feb 02 199. – knahs

+0

将其更改为'nvarchar(11)'然后,字段稍短,为转换 – paul

+0

谢谢保罗。 – knahs