Avatar billede dmcn Praktikant
31. maj 2003 - 12:35 Der er 4 kommentarer og
1 løsning

Hjælp til BETWEEN

Hej,

Jeg skal hente det samlede antal ordrer i dag, altså alle ordrer der er gået igennem fra f.eks.: 31/05/2003 00:00:00 og til 31/05/2003 23:59:59.
En omgang sen-nat-kodning gav følgende (jeg beklager den smule PHP der er med, men det er nok relevant for forståelsen):
$today = date("Y-m-d");
$foo = date("d");
$foo = $foo + 1;
$tomorrow = date("Y-m-") . str_pad($foo, 2, "0", STR_PAD_LEFT);

$get_totals = odbc_exec($conn, "SELECT SUM(orderPrice), SUM(deliveryPrice), COUNT(id) FROM orderstatus WHERE Orderdate BETWEEN '" . $today . "' AND '" . $tomorrow . "' AND (status IN (1,5,6,8,14))");

Problemet med ovenstående kommer naturligvis på dage som i dag, hvor den vil bruge 32/02/2003 som argument... Ikke helt smart.
Jeg søger derfor en stump SQL til at gøre arbejdet for mig. Jeg forestiller mig, at der er en SQL-funktion, som kan gøre noget lign.:
SELECT * FROM foo WHERE dato BETWEEN today AND tomorrow
Formentlig ikke helt så enkelt, men jeg håber I forstår hvad jeg mener. ;)
Avatar billede lap Nybegynder
31. maj 2003 - 12:42 #1
Hvorfor bruge between - "orderdate = totday" vil jo også give det korrekte resultat?
Avatar billede dmcn Praktikant
31. maj 2003 - 12:49 #2
Umiddelbart nemt og logisk, men det spiller ikke helt. Dog gør følgende:
$today = date("Y-m-d") . " 00:00:00";

$get_totals = odbc_exec($conn, "SELECT SUM(orderPrice), SUM(deliveryPrice), COUNT(id) FROM orderstatus WHERE Orderdate > '" . $today . "' AND (status IN (1,5,6,8,14))");

Så ser vi om jeg finder bugs i det senere. ;)
Læg et svar, pointene er klart dine.
Avatar billede lap Nybegynder
31. maj 2003 - 12:52 #3
Du kunne kikke på funktionen to_char(orderdate) - hvis den findes (kender mest til oracle), således at orderdate (som åbenbart er et timestamp) kan formateres til en ren dato - og sysdate kan også formateres til en ren dato - og derefter sammenligne disse:

where to_char(orderdate,'YYMMDD') = to_char(sysdate,'YYMMDD') - det var på oraclesprog
Avatar billede dmcn Praktikant
31. maj 2003 - 12:53 #4
Jeg må i gang med at søge videre, så. Tak for assistancen. :)
Avatar billede d-fens Nybegynder
31. maj 2003 - 21:38 #5
Du kan evt. kigge på SQL-funktionen DateAdd i forbindelse med funktione GetDate()
hvor du kan lægge dage til og trække dage fra en dato.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester