SQL date search range
ik ben bezig met een uren script voor een intranet waar mensen hun uren in voeren en daar ook in kunnen zoeken..
nu krijg ik het zoeken bij de datums niet voor elkaar..
datums worden opgeslagen als dd-mm-yyyy
mijn test data:
Test data Internet 6.5 20-04-2009
Test data Internet 6,5 20-04-2009
Test data Internet 18 01-06-2009
Test data Internet 2 27-05-2009
Test data Internet 10 03-06-2009
als ik zoek:
uren.datum >= '02-04-2009'
dan laat hij "01-06-2009" niet zien terwijl dat pas 2 maand later is.
hoe moet ik dit doen?
Met vriendelijke groeten,
DirkJan Heinen
Edit.
mijn voledige sql opdracht voor het zoeken:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
class uren {
function search($klant,$taak,$vDatum,$tDatum) {
$return = array();
$sql = "
SELECT uren.*, taak.name AS taak
FROM uren
INNER JOIN taak ON taak.ID = uren.taakID
WHERE
uren.klant LIKE '%$klant%'
AND
taak.ID = '$taak'
AND
uren.datum >= '$vDatum'
";
$query = mssql_query($sql) or $this->error[] = mssql_get_last_message();
while($row = mssql_fetch_assoc($query)) {
$return[] = $row;
}
return $return;
}
}
?>
class uren {
function search($klant,$taak,$vDatum,$tDatum) {
$return = array();
$sql = "
SELECT uren.*, taak.name AS taak
FROM uren
INNER JOIN taak ON taak.ID = uren.taakID
WHERE
uren.klant LIKE '%$klant%'
AND
taak.ID = '$taak'
AND
uren.datum >= '$vDatum'
";
$query = mssql_query($sql) or $this->error[] = mssql_get_last_message();
while($row = mssql_fetch_assoc($query)) {
$return[] = $row;
}
return $return;
}
}
?>
Gewijzigd op 01/01/1970 01:00:00 door DirkJan Heinen
Is het datum-veld wel van het type DATE? Ik meende dat MySQL datums als YYYY-MM-DD opsloeg.
het is geen MYSQL maar MSSQL
Minor notice: Vars buiten quotes....
Het kan best zijn dat je wel een datum als zodanig mag invoeren, maar dat die 'm automatisch omzet naar de juiste vorm?
Wanneer je een datum als 0000-00-00 opslaat, dan is een "latere datum" altijd hoger dan een voorgaande, terwijl dat met 00-00-0000 niet zo is:
2008-08-10 (yyyy-mm-dd) is altijd kleiner dan 2008-09-02
maar 02-09-2008 is niet groter dan 10-08-2008 (tip: Haal die streepjes er eens tussen weg, dan snap je wat ik bedoel)