Hi,
Ik heb een database met daarin een datumveld. Ontwerp van de database is niet geheel goed geweest, maar de meeste problemen heb ik opgelost. Op eentje na. In dat datumveld staan de data als volgt: "04-12-2002 om 15:00". Niet netjes, maar het zij zo.
Nu wil ik graag een selectie kunnen maken in een bepaalde tijdsperiode. Via een php scriptje kan je een begin en een einddatum opgeven, en ik wil dus alle tussenliggende data terugkrijgen.
Gezien het feit dat het datumveld een varchar-veld is, heb ik de variabelen $begin en $eind als volgt opgebouwd: 20021204, wat dus vandaag is
.
Nu heb ik een SQL-query, die er als volgt uitziet:
Deze query is syntactisch juist, alleen hij geeft geen data terug. Terwijl $concat volgens mij een waarde als 20021204 (uiteraard afhankelijk van de waarde die in de tabel staat) zou moeten bevatten.
Als ik deze query op het scherm laat zien, ziet deze er als volgt uit.
En het is 100% zeker dat er gegevens tussen die 2 data in de tabel staan.
Ik heb de query op verschillende manieren geprobeerd, ook bijvoorbeeld zo:
Deze syntax klopt niet, ik zie alleen niet wat er aan klopt. Ik heb wat met haakjes zitten schuiven, maar ook dat hielp niet.
Ik heb zelf het idee dat er niet in het datumveld geselecteerd wordt, hoewel ik hier niet zeker van ben.
Is er iemand die mij verder op weg zou kunnen helpen?
Ik heb een database met daarin een datumveld. Ontwerp van de database is niet geheel goed geweest, maar de meeste problemen heb ik opgelost. Op eentje na. In dat datumveld staan de data als volgt: "04-12-2002 om 15:00". Niet netjes, maar het zij zo.
Nu wil ik graag een selectie kunnen maken in een bepaalde tijdsperiode. Via een php scriptje kan je een begin en een einddatum opgeven, en ik wil dus alle tussenliggende data terugkrijgen.
Gezien het feit dat het datumveld een varchar-veld is, heb ik de variabelen $begin en $eind als volgt opgebouwd: 20021204, wat dus vandaag is
Nu heb ik een SQL-query, die er als volgt uitziet:
PHP:
1
2
3
| $concat = "(CONCAT((SUBSTRING (datum,7,4)), (SUBSTRING (datum,4,2)), SUBSTRING (datum,1,2))))"; $query_string = "SELECT * FROM medewerkers WHERE ('$concat' > '$begin') AND ($concat' < '$eind') ORDER BY datum;"; |
Deze query is syntactisch juist, alleen hij geeft geen data terug. Terwijl $concat volgens mij een waarde als 20021204 (uiteraard afhankelijk van de waarde die in de tabel staat) zou moeten bevatten.
Als ik deze query op het scherm laat zien, ziet deze er als volgt uit.
code:
1
2
3
4
5
| SELECT * FROM medewerkers WHERE
('(CONCAT((SUBSTRING (datum,7,4)), (SUBSTRING (datum,4,2)),(SUBSTRING (datum,1,2))))' > '20020101')
AND
('(CONCAT((SUBSTRING (datum,7,4)), (SUBSTRING (datum,4,2)),(SUBSTRING (datum,1,2))))' < '20021205')
ORDER BY datum; |
En het is 100% zeker dat er gegevens tussen die 2 data in de tabel staan.
Ik heb de query op verschillende manieren geprobeerd, ook bijvoorbeeld zo:
PHP:
1
2
3
| $query_string2 = "SELECT * FROM medewerkers WHERE ('$begin' < 'CONCAT((SUBSTRING (datum,7,4)), (SUBSTRING (datum,4,2)), (SUBSTRING (datum,1,2)))' < '$eind') ORDER BY datum;"; |
Deze syntax klopt niet, ik zie alleen niet wat er aan klopt. Ik heb wat met haakjes zitten schuiven, maar ook dat hielp niet.
Ik heb zelf het idee dat er niet in het datumveld geselecteerd wordt, hoewel ik hier niet zeker van ben.
Is er iemand die mij verder op weg zou kunnen helpen?