在字符串

时间:2016-02-05 20:47:50

标签: sql tsql

我有一个有趣的任务,就是在文本字段中找到第一个Date值。没有标识符,有时日期会以各种格式出现,例如'01 / 01/2015','1/1/2015',1/1/15','1/01/15'等。 格式将始终为月,日,年;但是,它可能会有所不同 mm / dd / yyyy,mm / dd / yy,m / dd / yyyy等。

例如:

  

西班牙的降雨主要发生在2015年1月1日,然后结束   2015年2月2日和04/01/2015。

我想捕获“01/01/2015”,因为它是字符串中的第一个日期。

试图找出最简单的方法来提取第一个日期,但是还没有这样的运气。 有什么建议吗?

韩国社交协会!

2 个答案:

答案 0 :(得分:2)

好的这会有点起作用,或者至少是一个好的起点:

您可以找到有关字符串函数here

的更多信息
DECLARE @ST VARCHAR(MAX) =  'The rain in Spain falls mainly on  1/1/2015 and then it ends between 03/02/2015 and 04/01/2015'

SELECT  SUBSTRING(@ST,PATINDEX ( '%[0-9]%/%[0-9]/%[0-9]%' , @ST ),PATINDEX ('%[A-Z]%', SUBSTRING(@ST,PATINDEX ( '%[0-9]%/%[0-9]/%[0-9]%' , @ST ),LEN(@ST)))-1) 

结果: enter image description here

答案 1 :(得分:1)

如果您使用的是sql,则可以使用LIKE来识别字符串中是否有日期:

SELECT * FROM Table WHERE Value LIKE '% %/%/% %' 

每个“%”匹配一个或多个字符。如果要提取第一个日期,则可以使用case语句。请参阅:TSQL CASE with if comparison in SELECT statement