我有一个名为SMS_OUTBOX
的表,它有一个名为varchar
的{{1}},它已经拥有超过30,000条记录,所有DATE
条记录都存储如下:{ {1}} ...
我想将所有这些内容更改为DATE
,但我该怎么做?
如何逐步更改YYY-MM-DD
到MM/DD/YYYY hh:mm:ss AM/PM
的所有当前记录,而不是逐个更改。
使用示例:
2013-03-18
我现在想要:
03/18/2013
或
2013-09-17
或只是
9/17/2013 10:15:41 AM
如果没有时间。
答案 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
答案 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以获取日期格式选项的完整列表。