/ 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
[MSSql 2k] Sammenligne dato fra tidsstempe~
Fra : Jesper Stocholm


Dato : 09-09-04 08:16

Jeg har et problem med sammenligning af datoer. Jeg skal sammenligne
current_datetime (eller GetDate()) med to datetime-felter i min db for at
se, om current_datetime ligger imellem disse.

Jeg gør pt. som dette:

WHERE
...
CURRENT_DATETIME BETWEEN Table1.ValidFrom and Table2.ValidTo


men - jeg har fundet ud at, at det kun er _datoerne_, der skal sammenlignes
- og ikke timer/minut/sekund-detaljerne.

Men hvordan gør jeg det? Jeg synes ikke rigtigt, at datetime-funktionerne i
BOL giver mig svaret.



--
Jesper Stocholm http://stocholm.dk

Programmer's code comment:
//It probably makes more sense when you're stoned.

 
 
Peter Lykkegaard (08-09-2004)
Kommentar
Fra : Peter Lykkegaard


Dato : 08-09-04 20:23

"Jesper Stocholm" wrote in a message

> Jeg har et problem med sammenligning af datoer. Jeg skal sammenligne
> current_datetime (eller GetDate()) med to datetime-felter i min db for at
> se, om current_datetime ligger imellem disse.
>
> men - jeg har fundet ud at, at det kun er _datoerne_, der skal
> sammenlignes
> - og ikke timer/minut/sekund-detaljerne.
>
> Men hvordan gør jeg det? Jeg synes ikke rigtigt, at datetime-funktionerne
> i
> BOL giver mig svaret.
>
Du kan ikke konvertere felterne til at kun at anvende dato?
Problemet er at du render ud i noget tablescan = muligvis
performanceproblemer

For at få fat i datoen kan du evt bruge Convert (style = 112) eller DatePart
(dayofyear)

- Peter



Jesper Stocholm (09-09-2004)
Kommentar
Fra : Jesper Stocholm


Dato : 09-09-04 09:12

Peter Lykkegaard wrote:

> "Jesper Stocholm" wrote in a message
>
>> Jeg har et problem med sammenligning af datoer. Jeg skal sammenligne
>> current_datetime (eller GetDate()) med to datetime-felter i min db
>> for at se, om current_datetime ligger imellem disse.
>>
>> men - jeg har fundet ud at, at det kun er _datoerne_, der skal
>> sammenlignes
>> - og ikke timer/minut/sekund-detaljerne.
>>
>> Men hvordan gør jeg det? Jeg synes ikke rigtigt, at
>> datetime-funktionerne i
>> BOL giver mig svaret.
>>
> Du kan ikke konvertere felterne til at kun at anvende dato?
> Problemet er at du render ud i noget tablescan = muligvis
> performanceproblemer
>
> For at få fat i datoen kan du evt bruge Convert (style = 112) eller
> DatePart (dayofyear)

Tak for dit hurtige svar :)

Jeg har kigget lidt på data (og hvor de fødes), og det viser sig, at
datetime-felterne er rene datoer (dvs uden time/minut/sekund-snask), dvs
"problemet" er nu indsnævret til CURRENT_DATETIME.

Vi har valgt at bruge

SELECT CAST(Convert(CHAR(8), CURRENT_TIMESTAMP, 112) As DATETIME)



--
Jesper Stocholm http://stocholm.dk

Programmer's code comment:
//It probably makes more sense when you're stoned.

Peter Lykkegaard (09-09-2004)
Kommentar
Fra : Peter Lykkegaard


Dato : 09-09-04 22:41

"Jesper Stocholm" wrote

> Tak for dit hurtige svar :)
>
Jaja, det er godt med dig
Jeg har lige været i Finland og det gik vist et eller andet galt da jeg
stillede uret ved midnatstid
Så ka' jeg lære det

- Peter



Jesper Stocholm (09-09-2004)
Kommentar
Fra : Jesper Stocholm


Dato : 09-09-04 12:24

Peter Lykkegaard wrote:

> "Jesper Stocholm" wrote
>
>> Tak for dit hurtige svar :)
>>
> Jaja, det er godt med dig

Det var faktisk ikke for at være sjov - jeg havde ikke opdaget at
tidsstemplet på dit indlæg var fra i går.

> Jeg har lige været i Finland og det gik vist et eller andet galt da jeg
> stillede uret ved midnatstid
> Så ka' jeg lære det

Det er nemlig rigtigt.



--
Jesper Stocholm http://stocholm.dk

Programmer's code comment:
//It probably makes more sense when you're stoned.

Peter Lykkegaard (10-09-2004)
Kommentar
Fra : Peter Lykkegaard


Dato : 10-09-04 01:02

"Jesper Stocholm" wrote

> Det var faktisk ikke for at være sjov - jeg havde ikke opdaget at
> tidsstemplet på dit indlæg var fra i går.
>
Det eneste jeg så var datoen, jeg så først klokkeslettet bagefter, det må da
være næsten en rekord (for mig

- Peter



Jens Gyldenkærne Cla~ (09-09-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 09-09-04 20:23

Peter Lykkegaard skrev:

> Det eneste jeg så var datoen, jeg så først klokkeslettet
> bagefter, det må da være næsten en rekord (for mig

Tja - det er da imponerende at du i samme tråd kan være både bagud
og forud i tid...

Når du engang vender hjem til dansk standardtid må du gerne lade
din computer følge med
--
Jens Gyldenkærne Clausen

Peter Lykkegaard (09-09-2004)
Kommentar
Fra : Peter Lykkegaard


Dato : 09-09-04 21:03

"Jens Gyldenkærne Clausen" wrote
>
> Når du engang vender hjem til dansk standardtid må du gerne lade
> din computer følge med

Det var da jeg stillede om fra finsk til dansk tid at det gik galt
Håber at det er mere passende nu

Men hvad så har I da det at more jer over

- Peter



Jens Gyldenkærne Cla~ (09-09-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 09-09-04 09:25

Jesper Stocholm skrev:

> men - jeg har fundet ud at, at det kun er _datoerne_, der skal sammenlignes
> - og ikke timer/minut/sekund-detaljerne.

Jeg kender ikke nogen smart genvej, men her er et par muligheder du kan
overveje:

/* Fjern tiden (sæt den til 00:00:00) fra dags dato */
select CONVERT(datetime, CONVERT(varchar(10), getdate(), 105), 105)

/* Brug DATEDIFF */
SELECT *
FROM datotest
WHERE    DATEDIFF(d, ValidFrom, GETDATE()) >= 0
AND   DATEDIFF(d, ValidTo, GETDATE()) <= 0

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

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

Månedens bedste
Årets bedste
Sidste års bedste