0

我有一个名为的表SMS_OUTBOX,它有一个varchar被调用的表DATE,它已经有超过 30,000 条记录,所有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

或者

9/17/2013 00:00:00

要不就

9/17/2013 

如果没有时间。

4

3 回答 3

5

这个表达式应该做你问的:

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

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

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

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

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

于 2013-09-17T15:46:03.853 回答
1

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

ALTER TABLE table_name
ALTER COLUMN column_name DATETIME

更改表

于 2013-09-17T15:43:30.263 回答
1

您可以通过使用内置的 CAST 和 CONVERT 方法来实现这一点

首先CAST你的varcharto adatetime然后使用CONVERT将它转换回varchar你想要的格式

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

有关日期格式选项的完整列表,另请参见http://technet.microsoft.com/en-us/library/ms187928.aspx

于 2013-09-17T15:48:09.707 回答