2013-03-14 91 views
0

我有一个表(tabl)与列(Col)即nvarchar(10)数据类型。Tsql nvarchar日期更新

我不想改变数据类型或数据长度。该列包含此格式的日期yyyy-mm-dd(2012-04-24)我需要将该列更新为mm/dd/yyyy(2012年4月24日)。

+2

呃。为什么?如果你愿意,这种改变将会阻止你在数据库内进行合理的排序。为什么不在业务逻辑中重新格式化? – MattW 2013-03-14 04:51:08

+2

为什么你将日期存储为'nvarchar'?为什么不把它们存储为'Date'或'DateTime'? – 2013-03-14 04:55:48

+0

我不知道背景,但任何有数据库经验的人都会告诉你,将日期存储为字符是一个非常糟糕的主意,而且需要对其进行重新格式化,这只是一个症状。 – 2013-03-14 06:16:10

回答

0

这是一个可怕的一组约束,但你要问的是可能的:

UPDATE tabl SET col = CONVERT(nvarchar(10), CAST(col AS datetime), 101) 

101末是合适的日期样式从这个页面抓起:http://msdn.microsoft.com/en-us/library/ms187928.aspx

结果但是,您将拥有难以订购的日期,并且格式不明确。作为datetime存储是值得尊敬的事情。

+0

谢谢塔斯。我将数据类型更改为datetime,并使用由Tass给出的UPDATE tabl SET col = CONVERT(nvarchar(10),CAST(col AS datetime),101)仍然得到相同的结果,没有获得所需的格式 – knahs 2013-03-14 13:27:35

+0

好吧,现在你问一个不同的问题。我的答案是转换数据库中的字符串格式。现在您要以日期时间存储,您需要格式化日期/时间以显示在应用程序的某处 - “datetime”未在数据库中格式化。你应该关闭这个问题和研究日期格式,不管你使用什么语言。 – Tass 2013-03-14 22:14:19