Search

onze sponsors

microsoft_logo.gif


 

computrain_logo.JPG

Forum Login | Register
   Forum

 

Subject: convert varchar naar date formaat
Prev Next
You are not authorized to post a reply.

Author Messages
eric33User is Offline

Posts:0

27-04-2007 08:56:35 Alert 

Hallo,

Ik weet niet zeker of dit de juiste plek is voor mijn vraag maar onder het motto niet geprobeerd niet geweten ga ik het toch plaatsen.

Ik ben op dit moment bezig om voor een klant een view te maken waarin een aantal formules worden geplaatst om ervoor te zorgen dat deze niet meer als vertragende computed of defined fields in de rapportage tool hoeven te worden gemaakt.

Echter ik heb een probleem met het convert of cast commando en waarschijnlijk is het iets simpels waar ik gewoon overheen kijk of me blind op staar.

De formule is als volgt:

use dwhREPORT

select

Case
when patindex('%Call answered%',Calleventlog)= 'Call answered'  then cast(date,(Substring(Calleventlog,(patindex('%Call answered%',Calleventlog)-10),8)))

end
from reportTELEFONIE


Ik kan niet met een substring of vaste positie werken omdat er de mogelijkheid bestaat dat het op een variabele positiestaat.

Als hij dus op positie 11 Call answered tegenkomt dan moet de tijd worden omgezet naar ik denk dat de klant wil date of datetime.

Deze formule is in hyperion rapportage tool gebouwd door de leveranciers van het pakket.  Het gaat erom dat ik hiermee de begintijd van een gesprek krijg. De volgende formule die hierna zou komen is dan de eindtijd waardoor het mogelijk wordt om dze van elkaar af te halen en zo te berekenen hoelang een gesprek heeft geduurd.

Hopelijk kan iemand me vertellen hoe ik dat if statement als datum veld in mijn view straks kan gaan inbouwen.

Alvast bedankt.

Groeten,

Eric

Eduard BeijnesUser is Offline

Posts:36

27-04-2007 11:01:48 Alert 
wat ik zie:
patindex('%Call answered%',Calleventlog)= 'Call answered'

echter patindex geeft een getal terug en geen string. je kunt dus niet vergelijken met 'call answered'.

dus ja, het is inderdaad iets kleins ;-)

een voorbeeld uit bol:
Examples
A. Use a pattern with PATINDEX

This example finds the position at which the pattern "wonderful" begins in a specific row of the notes column in the titles table.

<PRE>USE pubs
GO
SELECT PATINDEX('%wonderful%', notes)
FROM titles
WHERE title_id = 'TC3218'
GO</PRE>

Here is the result set:

<PRE>----------- 
46          

(1 row(s) affected)<BR></PRE>

An ape in an suit stays an ape.
eric33User is Offline

Posts:0

27-04-2007 11:46:24 Alert 
Allereerst bedankt voor de aanvulling.

Echter volgens mij ben ik er dan nog niet.
Het is namelijk zo dat ik dus eerst de positie moet bepalen waar dus Called Answer staat en dan een vervolg actie moet maken
om er voor te zorgen dat ik dus de tijd als datettime veld 10:11:00 krijg

groeten,

eric
Eduard BeijnesUser is Offline

Posts:36

27-04-2007 18:36:43 Alert 
einde van de dag, meer tijd om te kijken. aangezien er geen voorbeeld regels qua data staan heb ik inderdaad alleen naar het statement gekeken en het verder niet aangepast/getest.

bij deze een voorbeeld:

create table #strings (s nvarchar(200))
insert #strings values ('10:11:12 hallo dit is onzin')
insert #strings values ('09:10:12 Call answered hallo dit is iets')
insert #strings values ('beetje vulling 10:11:12 Call answered hallo dit is een gesprek')
insert #strings values ('vullling 10:11:12 hier niets mee doen')
insert #strings values ('deze wel meenemen negeren 10:11:12 Call answered')
--select charindex('Call answered', s) from #strings where charindex('Call answered', s) <> 0

select substring(s, charindex('Call answered',s)-9,8 ) from #strings
where charindex('Call answered', s) <> 0

drop table #strings

hiermee krijg je een lijst van tijden.

An ape in an suit stays an ape.
David ScheltensUser is Offline

Posts:31

07-06-2007 15:18:47 Alert 
Draait het toevallig onder SQL2005? Zo ja, dan moet je vooral hier een CLR functie gebruiken (regular expressions).
André KammanUser is Offline
PASS Nederland

Posts:124


08-06-2007 11:39:14 Alert 
Ik zie dit als een uitdaging David

Wie wel eens met regular expressions heeft gewerkt kent de volgende uitdrukking :

Je hebt een probleem
Je besluit dat je het probleem wilt oplossen met een regular expression
Nu heb je 2 problemen
Wanneer is een regular expression beter dan good old T-SQL ?
Zelf denk ik dat bovenstaand voorbeeld van Eduard een schoolvoorbeeld van eenvoudige doch krachtige T-SQL is, waarvoor we zeker niet naar het paardenmiddel regular expressions hoeven te grijpen.

Maar waar ligt de grens ?

Wanneer wordt een regular expression simpeler dan T-SQL en wat zijn de verschillen in performance ?
You are not authorized to post a reply.
Forums > Forums > DBA > convert varchar naar date formaat



ActiveForums 3.6
  
Copyright (c) 2010 PASS Nederland   Privacy Statement  Terms Of Use