[php/mssql] datum select met concat

Pagina: 1
Acties:
  • 41 views sinds 30-01-2008

  • BreadFan
  • Registratie: Oktober 2001
  • Niet online
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 :P.

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? :)

  • GoodspeeD
  • Registratie: April 2002
  • Laatst online: 26-08 16:20
De functie concat() heb ik nog nooit gezien en staat ook niet op www.php.net als functie.

Heb je em zelf geschreven? Zo ja, weet je zeker dat de code daarin correct is?

edit:

Weet het al!

[ Voor 41% gewijzigd door GoodspeeD op 04-12-2002 15:29 ]


Verwijderd

Concat zegt mij ook niks. Voor zover ik weet is het geen php functie.

edit: Is concat niet een ASP of XML functie???

[ Voor 28% gewijzigd door Verwijderd op 04-12-2002 15:29 ]


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

Lijkt me gewoon een timestamp formaat.. probeer het eens de casten naar INT en dan MySQL's date en time functies er op los te laten?

http://www.mysql.com/doc/en/Cast_Functions.html
http://www.mysql.com/doc/en/Date_and_time_functions.html

edit:

Jongens.. CONCAT is MySQL functie..

[ Voor 41% gewijzigd door Bosmonster op 04-12-2002 15:30 ]


Verwijderd

Bosmonster schreef op 04 December 2002 @ 15:28:
Lijkt me gewoon een timestamp formaat.. probeer het eens de casten naar INT en dan MySQL's date en time functies er op los te laten?

http://www.mysql.com/doc/en/Date_and_time_functions.html

edit:

Jongens.. CONCAT is MySQL functie..
Shame on me :)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

:Z CONCAT is MySQL

En TIMESTAMP hoef je niet te casten naar INT. 't Is namelijk zo'n magic datum type van mysql waarop je gewoon alle Date and Time functies op los kan laten die MySQL je biedt.

Verder is het manual werk.
tip: DATE_FORMAT

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1

Dit topic is gesloten.