/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
sql og noget måske avanceret datoværk
Fra : Chrisser


Dato : 03-09-03 12:54

Hej
Jeg har indtil videre:
sql = " select sum(overslag) as akkBelob from rekvstam where udfoertaf=" &
FStringSql(initial) "
Men jeg skal have den kogt længere ned...
Jeg har en variabel der indeholder dato i formatet: '09-03-2003' ( dags dato
i dette tilfælde, men det vil variere)
Jeg skal have fat i de poster hvor feltet "opretdato" ligger i samme måned
som min datovariabel. Altså i ovenstående tilfælde alle de hvor
oprettelsesdatoen er i december måned ( samme år ! )

Er der en smart måde at gøre det på i MSSql ?

Chrisser



 
 
Kristian Damm Jensen (03-09-2003)
Kommentar
Fra : Kristian Damm Jensen


Dato : 03-09-03 13:45

"Chrisser" <cbj@egdatainform.dk> skrev i en meddelelse
news:bj4kn0$26j$1@sunsite.dk...
> Hej
> Jeg har indtil videre:
> sql = " select sum(overslag) as akkBelob from rekvstam where udfoertaf=" &
> FStringSql(initial) "
> Men jeg skal have den kogt længere ned...
> Jeg har en variabel der indeholder dato i formatet: '09-03-2003' ( dags
dato
> i dette tilfælde, men det vil variere)
> Jeg skal have fat i de poster hvor feltet "opretdato" ligger i samme måned
> som min datovariabel. Altså i ovenstående tilfælde alle de hvor
> oprettelsesdatoen er i december måned ( samme år ! )
>
> Er der en smart måde at gøre det på i MSSql ?

Jeg er ikke helt stiv i MS-SQL, men er der ikke en funktion, der hedder
datepart? Den burde kunne levere månedens nummer til dig.



Chrisser (03-09-2003)
Kommentar
Fra : Chrisser


Dato : 03-09-03 14:16

Kristian Damm Jensen wrote:
>> Er der en smart måde at gøre det på i MSSql ?
>
> Jeg er ikke helt stiv i MS-SQL, men er der ikke en funktion, der
> hedder datepart? Den burde kunne levere månedens nummer til dig.

Jo
- dejligt med nogle der kan tænke kreativt når man selv er kørt flad

Den sidste del af min sql kom til at se sådan ud:
"... datepart("mm",OpretDato) = datepart("mm",'09-03-2003')
and datepart("yyyy",OpretDato) = datepart("yyyy",'09-03-2003') "

Hvor der så skal indsættes min variabel i stedet for de to datoer.
Så er jeg, så vidt jeg kan se, helt ud over at skulle tænke på hvor mange
dage der er i en given måned osv, er det ikke rigtigt ?

Chrisser



Peter Lykkegaard (03-09-2003)
Kommentar
Fra : Peter Lykkegaard


Dato : 03-09-03 14:55


"Chrisser" <cbj@egdatainform.dk> wrote in message
news:bj4kn0$26j$1@sunsite.dk...

> Jeg har en variabel der indeholder dato i formatet: '09-03-2003' ( dags
dato
> i dette tilfælde, men det vil variere)
> Jeg skal have fat i de poster hvor feltet "opretdato" ligger i samme måned
> som min datovariabel.

Du kan også bruge Month (i stedet for datepart)

Overvej på hvilket niveau du omsætter din datovariabel til måneds nummer
Om det skal være på MSSQL eller i dit script

En måde at teste tingene kan være at lave en select i din QA og derved "ser"
hvordan din tekst (datovariabel) bliver omsat til datetime formattet som
MSSQL bruger

mvh/Peter Lykkegaard



Chrisser (03-09-2003)
Kommentar
Fra : Chrisser


Dato : 03-09-03 15:00

Peter Lykkegaard wrote:
> Du kan også bruge Month (i stedet for datepart)

Ja det kunne jeg selvfølgelig

> Overvej på hvilket niveau du omsætter din datovariabel til måneds
> nummer
> Om det skal være på MSSQL eller i dit script

Jeg vil helst lade MSSQL tage sig af det ( det blev også resultatet )

> En måde at teste tingene kan være at lave en select i din QA og
> derved "ser" hvordan din tekst (datovariabel) bliver omsat til
> datetime formattet som MSSQL bruger

Nu har jeg en funktion til formatteringen op mod MSSQL så det var ikke der
hunden lå begravet - jeg kunne bare ikke lige se hvad jeg skulle finde på


Men jeg brugte QA til at teste output, jeg ved ikke hvad jeg skulle gøre
uden den

Chrisser



Peter Lykkegaard (03-09-2003)
Kommentar
Fra : Peter Lykkegaard


Dato : 03-09-03 15:43


"Chrisser" <cbj@egdatainform.dk> wrote in message
news:bj4s2r$fbp$1@sunsite.dk...
> Peter Lykkegaard wrote:
> > Du kan også bruge Month (i stedet for datepart)
>
> Ja det kunne jeg selvfølgelig
>
Hæ, eller den alt for lidt brugte DateDiff

Fx DateDiff(mm, GetDate(), '2003-09-03')

Den giver dig 0 hvis du er i indeværende år/måned eller en negativ/positiv
værdi ved fx

DateDiff(mm, GetDate(), '2002-09-03')
DateDiff(mm, GetDate(), '2004-09-03')

Så slipper du for at checke på både og måned i din where clause
Det er jo beregnede værdier og kan give lidt tab mht performance

mvh/Peter Lykkegaard



Chrisser (04-09-2003)
Kommentar
Fra : Chrisser


Dato : 04-09-03 07:10

Peter Lykkegaard wrote:
> Fx DateDiff(mm, GetDate(), '2003-09-03')
>
> Den giver dig 0 hvis du er i indeværende år/måned eller en
> negativ/positiv værdi ved fx
>
> DateDiff(mm, GetDate(), '2002-09-03')
> DateDiff(mm, GetDate(), '2004-09-03')
>
> Så slipper du for at checke på både og måned i din where clause
> Det er jo beregnede værdier og kan give lidt tab mht performance

Den vil jeg da lige lege lidt med, jo simplere jo bedre

Chrisser



Chrisser (04-09-2003)
Kommentar
Fra : Chrisser


Dato : 04-09-03 13:41

Peter Lykkegaard wrote:
> Hæ, eller den alt for lidt brugte DateDiff
>
> Fx DateDiff(mm, GetDate(), '2003-09-03')
>
> Den giver dig 0 hvis du er i indeværende år/måned eller en
> negativ/positiv værdi ved fx
>
> DateDiff(mm, GetDate(), '2002-09-03')
> DateDiff(mm, GetDate(), '2004-09-03')
>
> Så slipper du for at checke på både og måned i din where clause
> Det er jo beregnede værdier og kan give lidt tab mht performance

Det blev til:
"select sum(overslag) as akkBelob from rekvstam where initial='cbj'
and DateDiff("mm", OpretDato, '09-03-2004') = 0"

- jeg har testet lidt frem og tilbage og det lader til at ovenstående både
tester år og måned, altså at første argument angiver hvor "langt ned" den
skal gå i tjekket ( dårligt formuleret ) frem for at den kun tester på måned
?

Det vidste jeg ikke - jeg kan kun sige at det er smart

Chrisser



Peter Lykkegaard (04-09-2003)
Kommentar
Fra : Peter Lykkegaard


Dato : 04-09-03 16:39


"Chrisser" <cbj@egdatainform.dk> wrote in message
news:bj7brb$qr9$1@sunsite.dk...
> Peter Lykkegaard wrote:
> > Hæ, eller den alt for lidt brugte DateDiff
> >
> > Fx DateDiff(mm, GetDate(), '2003-09-03')
>
> Det vidste jeg ikke - jeg kan kun sige at det er smart
>
Jeg sagde jo at den blev brugt alt for lidt
Jeg har selv løst nogle problemer hvor en post blev sat ind i en table for
derefter ligge i x antal minutter hvor den så bliver frigivet
x er variabel efter forsk kriterier og poster bliver sat ind løbende
Her kommer DateDiff "to the rescue"

mvh/Peter Lykkegaard



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste