【问题标题】:Parse Column Data in SQL Server Management Studio在 SQL Server Management Studio 中解析列数据
【发布时间】:2017-07-04 05:05:12
【问题描述】:

我有一列事件,其格式如下所示:

Production-PMPO_1-2017-02-14 15:30:00.000 

我可以在 SQL Server Management Studio 或 VS (vb.net) 中解析开头以使其仅具有 DateTime 吗?

2017-02-14 15:30:00

【问题讨论】:

  • 他们总是以Production-PMPO_1-为前缀吗?
  • 是的,你可以。 charindexsubstring 的一些用法将完成这项工作。

标签: sql sql-server vb.net visual-studio ssms


【解决方案1】:

由于日期时间部分始终为 23 个字符,您可以使用 RIGHT

SELECT RIGHT(x.Col, 23) as dt
FROM (SELECT 'Production-PMPO_1-2017-02-14 15:30:00.000' as Col) x

使用 VB.NET 你可以使用Substring:

Dim dt As String = str.Substring(str.Length - 23)

【讨论】:

  • 支持我,但我会添加CONVERT(DATETIME,RIGHT(...),120) 以获得datetime 回复
  • @Shnugo: 或者首先将其存储在datetime-列中;)
  • 绝对正确...我敢肯定,这个问题的原因是希望得到这个排序:-)
  • @TimSchmelter 是否可以创建一个将表列从 nvarchar 更改为 datetime 的视图?
  • @Dplusa25:当然,视图就像一个查询。您可以将子字符串转换为datetime。但是你应该真正改变你的数据模型,并将其存储在一个单独的日期时间列中。
【解决方案2】:

如果Production-PMPO_1-是固定的,那么你可以用空字符串替换它。

DECLARE @a VARCHAR(100)='Production-PMPO_1-2017-02-14 15:30:00.000'
SELECT REPLACE(@a,'Production-PMPO_1-','');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    相关资源
    最近更新 更多