【问题标题】:Converting to mm/dd/yyyy format转换为 mm/dd/yyyy 格式
【发布时间】:2011-11-07 01:54:46
【问题描述】:

我有一个名为 SF_Data 的表,还有一个名为 IN_Date 的列,ID 数据看起来像:

ID      IN_Date
1       9/8/2010
2       26/04/2011
3       20/09/2010

IN_Date 的数据类型是 varchar(50)。

我正在尝试将 IN_Date 转换为 mm/dd/yyyy 格式。我试过这样做:

Select convert(varchar,IN_Date,103) From dbo.SF_Data

但格式仍然没有改变。谁能告诉我哪里出错了

【问题讨论】:

  • 如果是日期 - 为什么不是 DATETIME ??这会让事情变得简单得多!
  • @GBN 表是别人创建的
  • 更改列数据类型!!从长远来看,你会为自己省去很多悲伤......

标签: sql sql-server-2008 tsql converter


【解决方案1】:

你需要一个转换来修复数据(到正确的数据类型)之前格式化...

Select
     convert(varchar,
         convert(date, IN_Date, 103),
     101)
from dbo.SF_Data

【讨论】:

  • 它给了我以下错误消息 102,级别 15,状态 1,第 1 行“101”附近的语法不正确。
  • @Peter - 只是少了一个逗号,已修复
  • @Peter:Joel 修正了我的语法,缺少逗号。哎呀。
【解决方案2】:

varchar 转换为varchar 时,convert 的第三个参数没有意义。因此,根据 @marc_s 的评论,您必须使用 103 格式将 varchar 转换为 datetime,然后从 datetime 转换为 varchar,指定 101 格式:

Select convert(varchar(12),convert(datetime,IN_Date,103),101) From dbo.SF_Data

例如:

select convert(varchar(12),convert(datetime,'31/12/2001',103),101)

打印12/31/2001

See MSDN.

【讨论】:

  • 是的 - 但它是一个 VARCHAR 开头 - 它需要先转换为 DATETIME,然后再转换回 VARCHAR(以不同的格式)
猜你喜欢
  • 1970-01-01
  • 2013-08-31
  • 2016-06-21
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多