[mysql] Fout in datum query

Pagina: 1
Acties:

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Hallo ik heb 2 velden met als type DATETIME de 1e heet task_start_date en de 2e task_end_date

Ik heb een query (namelijk deze:)
code:
1
2
3
4
5
6
7
8
SELECT * 
FROM tasks 
WHERE (YEAR(task_start_date) <= 2002 
AND MONTH(task_start_date) <= 3 
AND DAY(task_start_date) <= 27) 
AND (YEAR(task_end_date) >= 2002 
AND MONTH(task_end_date) >= 3 
AND DAY(task_end_date) >= 27)

en ik krijg deze fout:
code:
1
2
3
You have an error in your SQL syntax near 
'(task_start_date) <= 27) AND (YEAR(task_end_date) >= 2002 AND MONTH(task_end_dat' 
at line 1

Waarom is deze code fout? Op mysql.com/doc staat dat de functie gewoon bestaat... zie http://www.mysql.com/doc/D/a/Date_and_time_functions.html

vreemd maar wie kan me helpen? En ja... ik heb -nu- wel gezocht...

edit: layoutverzachting

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

( en )

Doet iets met Cloud (MS/IBM)


  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Op maandag 25 maart 2002 14:24 schreef D2k het volgende:
( en )
Nou, waar zit de fout in? Ik zie namelijk geen fout...

  • mjax
  • Registratie: September 2000
  • Laatst online: 02-09 04:48
Vraagje:

Wat is het nut van die twee haakjesparen? (U AND V) AND (X AND Y) == U AND V AND X AND Y

Verder is deze query meer een omslachtige manier om alle records met datum 27-3-2002 op te vragen.

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Op maandag 25 maart 2002 14:30 schreef mjax het volgende:
Vraagje:

Wat is het nut van die twee haakjesparen? (U AND V) AND (X AND Y) == U AND V AND X AND Y

Verder is deze query meer een omslachtige manier om alle records met datum 27-3-2002 op te vragen.
Er zijn 2 velden... dus... en als de start datum voor de ingevoerde datum ligt moet is ook een resultaat uitspugen uit spuugen....

  • mjax
  • Registratie: September 2000
  • Laatst online: 02-09 04:48
Op maandag 25 maart 2002 14:34 schreef Monstar.nl het volgende:

[..]

Er zijn 2 velden... dus... en als de start datum voor de ingevoerde datum ligt moet is ook een resultaat uitspugen uit spuugen....
Ik had niet gezien dat het om twee verschillende velden gaat.

Maar mijn vraag over de noodzaak van de 2 haakjesparen is nog niet beantwoord.

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Op maandag 25 maart 2002 14:47 schreef mjax het volgende:

[..]

Ik had niet gezien dat het om twee verschillende velden gaat.

Maar mijn vraag over de noodzaak van de 2 haakjesparen is nog niet beantwoord.
Dat is om ovezicht te houden... het is niet nodig maar het is ook niet hinderlijk voor de werking...

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

is het niet dit?
Op maandag 25 maart 2002 14:51 schreef D2k het volgende:
max() is een functie die je moet selecten
dus select max()/min()/sum()/avg() from blaat
en die kan je dus niet in een where opnemen (zoals jij dat deed). Je kan ze dus wel opnemen in een GROUP BY dmv een HAVING.

Doet iets met Cloud (MS/IBM)


  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Op maandag 25 maart 2002 15:13 schreef D2k het volgende:
is het niet dit?
[..]
DAY is niet een functie als MAX maar vergelijkbaar met PASSWORD of MD5... hij genereert een antwoord uit een veld in een record en niet als MAX van meerdere records tegelijk...

DAY kun je dus wel gebruiken bij een WHERE clause...

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Met deze query werkt ineens wel... vreemd...
code:
1
SELECT * FROM tasks WHERE (YEAR(task_start_date) <= 2002 AND MONTH(task_start_date) <= 3 AND EXTRACT(DAY FROM task_start_date) <= 25) AND (YEAR(task_end_date) >= 2002 AND MONTH(task_end_date) >= 3 AND EXTRACT(DAY FROM task_end_date) >= 25)

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Grumpf... hij doet het niet...

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Weet iemand dan iets vergelijkbaars?

  • MacWebber
  • Registratie: September 2000
  • Niet online
where task_start_date <= '2002-03-27' and task_end_date >= '2002-03-27'

Of is die oplossing te simpel? :)

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Op dinsdag 26 maart 2002 09:07 schreef MacWebber het volgende:
where task_start_date <= '2002-03-27' and task_end_date >= '2002-03-27'

Of is die oplossing te simpel? :)
Yep... sorry doet het niet :'( Heb je nog een voorstel? :)

  • MacWebber
  • Registratie: September 2000
  • Niet online
Call me stupid (bij wijze van spreken, hoeft niet perse), maar wat probeer je precies te doen? Want dat datum criterium doet volgens mij wat jij probeert te doen.

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Je geeft het antwoord zelf al in je eerste post.
In de handleiding van MySQL zie ik nergens een functie DAY(), wel DAYOFMONTH().
Even een debug ervaring erbij:
Als je een foutmelding krijgt zit de fout vaak vlak voor de positie die de parser/interpreter meldt.

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 23-08 10:29
Ok, ik zit hier in een al bestaande code te kutten en ik kom zoveel fouten tegen... waarvan dit er niet eentje is... hij gaf namelijk steeds wat anders weer dan dat de van orgine code weergaf... en die laatste is verkeerd.. en alle oplossingen die hier staan doen het...
Pagina: 1