【问题标题】:String to DateTime in SQL ServerSQL Server 中的字符串到日期时间
【发布时间】:2012-10-04 20:35:36
【问题描述】:

我有一个 varchar 类型的列,它包含大量数据(我们谈论的是数百万条记录)。我只选择日期列,如下所示:

select Value from mytable where ISDATE(mytable.Value) = 1

我想将结果中的所有值转换为MM/dd/yyyy HH:mm:ss tt的格式

请注意,这些值有多种不同的格式。

如何在 SQL Server 中做到这一点?

【问题讨论】:

  • 您是否提前知道所有可能的日期格式?我认为您需要将所有字符串解析为中间 DATETIME 对象,然后使用您的显示格式将字符串拉回。
  • 为什么不从 UI 转换日期而不是消耗数据库服务器资源?
  • @Ron,你说的是哪种用户界面?不幸的是,我有数百万个已存储的日期值存储为 varchars,我想将它们转换为统一格式。
  • 抱歉,我没有意识到这是永久转换。

标签: sql sql-server date type-conversion string-formatting


【解决方案1】:

试试这个

SELECT CONVERT(VARCHAR(10), CAST(value as datetime), 101) + ' ' 
     + substring(convert(varchar(20), CAST(value as datetime), 9), 13, 5) 
     + ' ' + substring(convert(varchar(30), CAST(value as datetime), 9), 25, 2) As dateValue
FROM mytable 
WHERE ISDATE(mytable.Value) = 1

更多关于 SQL SERVER 的日期格式

SQL Server Date Formats

【讨论】:

  • @RichardTheKiwi 原因是他在 "MM/dd/yyyy HH:mm:ss tt" 中需要它,你能做到这一点而不会破坏时间和时间吗?如果可以,请添加您的答案。
  • @RichardTheKiwi 你删除了你的评论?否决票呢?你能说出你的观点吗?
  • 谢谢您,我自己独立于您的答案找出了解决方案的其余部分,这不一样,但当然是等价的。再次感谢您。
  • @Lajos Arpad,不客气。请将您的答案也添加为答案或在您的问题中,以便其他人可以看到解决方案。
  • 相当于你的,我的解决方案背后的想法和你的想法没有区别,所以,基本上我会复制你的答案,因为我开始根据你的初始解决AM / PM问题回答。我的回答没有任何意义,因为没有相关的差异。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-11
  • 2016-04-02
  • 1970-01-01
  • 2019-08-31
  • 1970-01-01
  • 2013-04-01
  • 1970-01-01
相关资源
最近更新 更多