【问题标题】:Please help me with this I want to take date only from varchar column in table of SQL Server in select statement example is请帮我解决这个问题我只想从选择语句示例中的 SQL Server 表中的 varchar 列中获取日期是
【发布时间】:2014-08-20 11:37:46
【问题描述】:

请帮我解决这个问题,我只想从 SQL Server 表中的列中获取日期,在 select 语句示例中是

'用户于 2014 年 8 月 14 日 10:30:58 致电无人接听,客户将回电。 '

【问题讨论】:

  • 欢迎来到 SO!为了帮助人们回答您的问题,您能否提供有关您的数据库结构的更多详细信息?这是一个字符串值,您想删除除日期之外的所有内容吗?如果是这样,字符串是否总是这样构建?

标签: sql-server


【解决方案1】:

如果日期总是在文本“on”和“called”之间,你可以使用这个

    select cast(substring(@s,PATINDEX('%on%',@s)+2,PATINDEX('%called%',@s)-PATINDEX('%on%',@s)-2) as datetime)

用你的列替换@s

【讨论】:

  • 没有这个给定的解决方案不起作用,并且日期文本也是根据用户输入...thanx for comment
【解决方案2】:

试试这个:

DECLARE @YourColumn NVARCHAR(100) = 'By user on 14 July 2014 10:30:58 called no answer client left will call back. '
SELECT CAST(SUBSTRING(@YourColumn, CHARINDEX('On ',@YourColumn)+3,CHARINDEX(':',@YourColumn)+5 - CHARINDEX('On ',@YourColumn)-2) AS Date)

【讨论】:

  • 不工作它会给出错误消息 174,级别 15,状态 1,第 1 行子字符串函数需要 3 个参数。谢谢
  • 我编辑我的答案。请再次检查。
  • 这只有在月份名称为 6 个字符时才真正有效……如果月份是 7 月,那么您的子字符串就太长了。
  • @AndrewCounts。谢谢你的评论。为了支持每个月,我的答案都会改变。
猜你喜欢
  • 2021-11-14
  • 1970-01-01
  • 2022-11-26
  • 1970-01-01
  • 2011-04-23
  • 2023-01-22
  • 1970-01-01
  • 2021-04-10
  • 2023-02-22
相关资源
最近更新 更多