Click here to monitor SSC
SQLServerCentral is supported by Redgate
 
Log in  ::  Register  ::  Not logged in
 
 
 
        
Home       Members    Calendar    Who's On


Add to briefcase

extract date Expand / Collapse
Author
Message
Posted Tuesday, February 26, 2013 12:44 PM
Valued Member

Valued MemberValued MemberValued MemberValued MemberValued MemberValued MemberValued MemberValued Member

Group: General Forum Members
Last Login: Wednesday, June 22, 2016 8:22 AM
Points: 64, Visits: 221
I need extract date from one column which has datatype text.
For Ex:
- aaaaaaa 02/20/2002 jjjjjj sddsdjjjjsdsd sdsds
- asdlajsd fjsdfjkdgn dsjbfks, dfjksflml,fsf,f sdfsdf 9/3/99 sjdfnsdnf sjdfoisofn
- sdkfjos fjsdopfj uyro dlsfl 02-02-02 sflnsldfn sdkflsn
- fdklnsdlnf 02-02 fjsksngjk
- sdkflsdnfl 02/02 hisfdhiif sdjfsdkfk
Post #1424222
Posted Tuesday, February 26, 2013 1:00 PM


SSChampion

SSChampionSSChampionSSChampionSSChampionSSChampionSSChampionSSChampionSSChampionSSChampionSSChampion

Group: General Forum Members
Last Login: Yesterday @ 1:31 PM
Points: 14,407, Visits: 37,678
it'll take a bit of work, and you'll need the DelimitedSplit8K function (search SSC and read the article)


things like 02/02 and 02-02 are not dates, so they do not get caught in my example...you'll have to add additional pattern matching on the myfn.Item like i've done with the ISDATE function...something like 'LIKE [0-9][0-9]/[0-9][0-9]
and other similar patterns.
With mySampledata(id,SomeComment)
AS
(SELECT 1,'- aaaaaaa 02/20/2002 jjjjjj sddsdjjjjsdsd sdsds
- asdlajsd fjsdfjkdgn dsjbfks, dfjksflml,fsf,f sdfsdf 9/3/99 sjdfnsdnf sjdfoisofn
- sdkfjos fjsdopfj uyro dlsfl 02-02-02 sflnsldfn sdkflsn
- fdklnsdlnf 02-02 fjsksngjk
- sdkflsdnfl 02/02 hisfdhiif sdjfsdkfk')

SELECT mySampledata.*,
myfn.* ,
Case when IsDate(myfn.Item)=1 THEN CONVERT(datetime,myfn.Item) ELSE NULL END AS PotentialDate
FROM mySampledata
CROSS APPLY dbo.DelimitedSplit8K(SomeComment,' ') Myfn



Lowell

--
help us help you! If you post a question, make sure you include a CREATE TABLE... statement and INSERT INTO... statement into that table to give the volunteers here representative data. with your description of the problem, we can provide a tested, verifiable solution to your question! asking the question the right way gets you a tested answer the fastest way possible!
Post #1424226
Posted Tuesday, February 26, 2013 1:05 PM
Valued Member

Valued MemberValued MemberValued MemberValued MemberValued MemberValued MemberValued MemberValued Member

Group: General Forum Members
Last Login: Wednesday, June 22, 2016 8:22 AM
Points: 64, Visits: 221
Hey,

Thank you for quick response
What I meant was
For Ex:
Row1: aaaaaaa 02/20/2002 jjjjjj sddsdjjjjsdsd sdsds
Row2: asdlajsd fjsdfjkdgn dsjbfks, dfjksflml,fsf,f sdfsdf 9/3/99 sjdfnsdnf sjdfoisofn
Row3: sdkfjos fjsdopfj uyro dlsfl 02-02-02 sflnsldfn sdkflsn
Row4: fdklnsdlnf 02-02 fjsksngjk
Row5: sdkflsdnfl 02/02 hisfdhiif sdjfsdkfk

So I need result set as
Row1: 02/20/2002
Row2: 9/3/99
Row3: 02-02-02
Row4: 02-02
Row5: 02/02

Thanks,
Post #1424229
Posted Tuesday, February 26, 2013 1:41 PM


SSChampion

SSChampionSSChampionSSChampionSSChampionSSChampionSSChampionSSChampionSSChampionSSChampionSSChampion

Group: General Forum Members
Last Login: Yesterday @ 1:31 PM
Points: 14,407, Visits: 37,678
monilps (2/26/2013)
Hey,

Thank you for quick response
What I meant was
For Ex:
Row1: aaaaaaa 02/20/2002 jjjjjj sddsdjjjjsdsd sdsds
Row2: asdlajsd fjsdfjkdgn dsjbfks, dfjksflml,fsf,f sdfsdf 9/3/99 sjdfnsdnf sjdfoisofn
Row3: sdkfjos fjsdopfj uyro dlsfl 02-02-02 sflnsldfn sdkflsn
Row4: fdklnsdlnf 02-02 fjsksngjk
Row5: sdkflsdnfl 02/02 hisfdhiif sdjfsdkfk

So I need result set as
Row1: 02/20/2002
Row2: 9/3/99
Row3: 02-02-02
Row4: 02-02
Row5: 02/02

Thanks,


the technique i posted will work for all rows, and even better, will also catch when a comment has multiple dates in the same string.
get the function, modify my query to use your table and data, and let us know if it's doing what you expected.
I made a best guess for your data, so i can provide an example, but if you want a working query, it's up to you to provide the CREATE TABLE definition and sample data for testing
With mySampledata(id,SomeComment)
AS
(SELECT 1,'- aaaaaaa 02/20/2002 jjjjjj sddsdjjjjsdsd sdsds' UNION ALL
SELECT 2,'- asdlajsd fjsdfjkdgn dsjbfks, dfjksflml,fsf,f sdfsdf 9/3/99 sjdfnsdnf sjdfoisofn' UNION ALL
SELECT 3,'- sdkfjos fjsdopfj uyro dlsfl 02-02-02 sflnsldfn sdkflsn' UNION ALL
SELECT 4,'- fdklnsdlnf 02-02 fjsksngjk' UNION ALL
SELECT 5,'- sdkflsdnfl 02/02 hisfdhiif sdjfsdkfk')
SELECT mySampledata.*,
myfn.* ,
Case when IsDate(myfn.Item)=1 THEN CONVERT(datetime,myfn.Item) ELSE NULL END AS PotentialDate
FROM mySampledata
CROSS APPLY dbo.DelimitedSplit8K(SomeComment,' ') Myfn



Lowell

--
help us help you! If you post a question, make sure you include a CREATE TABLE... statement and INSERT INTO... statement into that table to give the volunteers here representative data. with your description of the problem, we can provide a tested, verifiable solution to your question! asking the question the right way gets you a tested answer the fastest way possible!
Post #1424241
« Prev Topic | Next Topic »

Add to briefcase

Permissions Expand / Collapse