SQL Server:将所有DATE记录更改为其他DATE格式

时间:2013-09-17 15:37:37

标签: sql-server

我有一个名为SMS_OUTBOX的表,它有一个名为varchar的{​​{1}},它已经拥有超过30,000条记录,所有DATE条记录都存储如下:{ {1}} ...

我想将所有这些内容更改为DATE,但我该怎么做?

如何逐步更改YYY-MM-DDMM/DD/YYYY hh:mm:ss AM/PM的所有当前记录,而不是逐个更改。

使用示例:

2013-03-18

我现在想要:

03/18/2013

2013-09-17

或只是

9/17/2013 10:15:41 AM

如果没有时间。

3 个答案:

答案 0 :(得分:5)

这个表达式应该符合您的要求:

convert(varchar(10), cast([Date] As Date), 101)

不要那样做。在字符串列中存储日期是非常糟糕的事情。您确实需要将其转换为日期时间列。

将列转换为日期时间后,当您第一次返回并查询数据时,它看起来就像该列的格式一样:

  

yyyy-MM-dd HH:mm:ss.fff

不要被愚弄。数据实际上并未以这种方式存储。它实际上以不可读的二进制格式存储,并且只在查询工具中以这种方式显示。然后,您可以使用CONVERT()函数将其转换为您想要的任何格式,甚至更好,只需将日期时间数据返回到客户端应用程序,并让客户端应用程序担心如何格式化它。

答案 1 :(得分:1)

如果我理解正确(您只是将一列从VARCHAR转换为DATETIME),那么这应该有效:

ALTER TABLE table_name
ALTER COLUMN column_name DATETIME

Alter Table

答案 2 :(得分:1)

您可以使用内置的CAST和CONVERT方法实现此目的

首先CAST将您的varchar改为datetime,然后使用CONVERT将其转换为您想要的格式的varchar

update table
set [date]= CONVERT(varchar(20),cast([date] as datetime),101)

另请参阅http://technet.microsoft.com/en-us/library/ms187928.aspx以获取日期格式选项的完整列表。