Groter of gelijk dan - operator

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jaws

Jaws

22/11/2006 13:26:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
SELECT count( * ) AS mozilla
FROM `statistiek`
WHERE browser LIKE '%Gecko%'
AND (
datum > '2006-11-20'
)
AND (
datum < '2006-11-20'
)
?>


Heb volgende SQL query gemaakt om uit een stats tabel een periode te selecteren. Dus via een form kan een gebruiker aangeven dat hij stats wil zien Van datum X tot Y. Opzicht werkt deze query zolang ik maar niet beide dagen het zelfde maak zoals boven in de query te zien is. Dan geeft hij 0 als resultaat. Nou dacht ik dit zelf natuurlijk gewoon op te lossen met de operator: <= en >=. Maar nou merk ik tot mijn verbazing dat ik dan weer 0 als resultaat krijg. Wat doe ik fout? Is die AND soms niet goed?
 
PHP hulp

PHP hulp

19/11/2024 02:28:40
 
- SanThe -

- SanThe -

22/11/2006 13:35:00
Quote Anchor link
(datum > '2006-11-20') AND (datum < '2006-11-20')

Dit kan simpelweg niet.
En vroeger dan ... en later dan ...

Edit: Dit kan dus niet bij dezelfde datum

Dit kan wel dus:
(datum > '2006-11-01') AND (datum < '2006-11-31')
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
 
Jaws

Jaws

22/11/2006 13:47:00
Quote Anchor link
SanThe schreef op 22.11.2006 13:35:
(datum > '2006-11-20') AND (datum < '2006-11-20')

Dit kan simpelweg niet.
En vroeger dan ... en later dan ...

Edit: Dit kan dus niet bij dezelfde datum

Dit kan wel dus:
(datum > '2006-11-01') AND (datum < '2006-11-31')


Maar goed nu weet ik dus wat niet kan :) Maar stel ik wil in die query ook opnemen dat ik dezelfde datums heb. Hoe los ik dit dan op?

Ik heb dus een formulier waarin je 2x een datum selecteerd. 1x de VAN-datum en 1x de TOT-datum. Als je dus beide datums het zelfde neemt doet zich het probleem voor. Waarom werkt de <= en de >= dan niet in dit geval? De ene datum is dan toch groter of gelijk aan en de andere kleiner of gelijk aan. Dat is toch 2x TRUE?? OF niet :)?
Gewijzigd op 01/01/1970 01:00:00 door Jaws
 
- SanThe -

- SanThe -

22/11/2006 13:58:00
Quote Anchor link
Dan doe dit:
(datum >= '2006-11-01') AND (datum <= '2006-11-31')
Werkt dus ook voor:
(datum >= '2006-11-20') AND (datum <= '2006-11-20')

Het is dan inclusief de ingegeven beide datums.
 
Frank -

Frank -

22/11/2006 14:01:00
Quote Anchor link
Kan een BETWEEN hier geen uitkomst bieden? Lijkt mij wel zo handig.
 
Jaws

Jaws

22/11/2006 14:05:00
Quote Anchor link
Goed maar dat is dus net wat ik geprobeerd had. En dat geeft dus raar genoeg 0 als resultaat. Terwijl er 100% zeker wel resultaten zijn op die dag.
 
- SanThe -

- SanThe -

22/11/2006 14:08:00
Quote Anchor link
Frank schreef op 22.11.2006 14:01:
Kan een BETWEEN hier geen uitkomst bieden? Lijkt mij wel zo handig.

Heb ik zelf nog nooit gebruikt, maar is vast een betere methode.

@Jaws: Staat de datum wel in het juiste veld TYPE? DATE (of DATETIME)

Edit: Typo.
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
 
Jurgen assaasas

Jurgen assaasas

22/11/2006 14:09:00
Quote Anchor link
BETWEEN kan ook maar ik vind persoonlijk < en > makkelijker werken. wat je ook kan doen is eerst eens even controleren of beide datums niet gelijk zijn.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
if($datum == $datum1){

$query = "SELECT count( * ) AS mozilla
FROM `statistiek`
WHERE browser LIKE '%Gecko%'
AND
datum > "
.$datum."";
}
else{

$query = "SELECT count( * ) AS mozilla
FROM `statistiek`
WHERE browser LIKE '%Gecko%'
AND (
datum > '"
.$datum."'
)
AND (
datum < '"
.$datum1."'";
)
}

?>
Gewijzigd op 01/01/1970 01:00:00 door Jurgen assaasas
 
Frank -

Frank -

22/11/2006 14:19:00
Quote Anchor link
@Jurgen: Waar zijn die gore backtics ` goed voor? Ritueel verbranden die zooi en vergeten dat je ze ooit hebt gebruikt.

Tevens raad ik je aan om slechts 1 query te gebruiken waarbij het AND-gedeelte variabel is, dat is een stuk beter te onderhouden:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
if($datum == $datum1){
    $qAnd = "datum > '".$datum."'";
}

else {
    $qAnd = "
        (
            datum > '"
.$datum."'
        )
        AND (
            datum < '"
.$datum1."'
        )"
;
}


$query = "
SELECT
    count(*) AS mozilla
FROM
    statistiek
WHERE
    browser LIKE '%Gecko%'
AND "
.$qAnd;
?>
 
Jaws

Jaws

22/11/2006 14:19:00
Quote Anchor link
@San:
Ik heb de datum opgeslagen in de database met de funtie NOW() in the query. Vervolgens maak ik een string van de variabelen verkregen van het form .

Op deze manier doe ik dat:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$datum
= date("Y-m-d", mktime(0,0,0,$maand,$dag,$jaar));
$datum2 = date("Y-m-d", mktime(0,0,0,$maand2,$dag2,$jaar2));
$selectie = mktime(0,0,0,$maand2,$dag2,$jaar2) - mktime(0,0,0,$maand,$dag,$jaar);
?>


@Jurgen:
Ja aan die oplossing was ik ook aan het denken maar had toch echt gedacht dat het ook met 1 query zou moeten kunnen. Verder vraag ik me nu eigenlijk af dat als ik nu als datum 20-11-2006 pak en de ander 21-11-2006, wat hij dan nu doet. Ik krijg als ik die query invoer igg een resultaat. Maar dat resultaat is wel het zelfde met zowel de < en > als de <= en >= operator.

@Frank:
Damn, ben je me weer te snel af :). Ja die oplossing bevalt me wel zo hoef ik niet mijn helecode te gaan wijzigen. Ik denk dat dit de beste oplossing is in dit geval.
Gewijzigd op 01/01/1970 01:00:00 door Jaws
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.