Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
MySQL problem with parameters
Message
 
 
À
04/03/2010 19:43:13
Information générale
Forum:
Visual FoxPro
Catégorie:
Base de données, Tables, Vues, Index et syntaxe SQL
Versions des environnements
Visual FoxPro:
VFP 8 SP1
Divers
Thread ID:
01452040
Message ID:
01452670
Vues:
45
>>>I have a MySql table with a DateTime field. I want to get all the records for today.
>>>ldDate = DATE()
>>>=SQLEXEC(lnHandle,"SELECT * FROM myTable WHERE dtField = ?ldDate")
>>>This produces no records, which is expected since I'm not accounting for the time portion of the field. But when I tried
>>>=SQLEXEC(lnHandle,"SELECT * FROM myTable WHERE DATE(dtField) = ?ldDate")
>>>I also got no records back. When I tried
>>>ldDate = DATE()
>>>lcDate = TRANSFORM(DTOS(ldDate),"@R 9999-99-99")
>>>=SQLEXEC(lnHandle,"SELECT * FROM myTable WHERE DATE(dtField) = ?lcDate")
>>>I got the records I wanted.
>>>
>>>Could somebody tell me why passing a Date value doesn't work while passing a character representation of the date does work?
>>>
>>>Thanks............Rich
>>
>>Use lower range and upper range instead, e.g.
>>
>>ldStartDate = Date()
>>ldEndDate = date() + 1
>>
>>=SQLEXEC(lnHandle,"SELECT * FROM myTable WHERE dtField >= ?ldStartDate and dtField < ?ldEndDate")
>
>Thanks for responding. Sorry for delayed acknowledgement.
>
>It's possibly an instance of NIH syndrome ......... but I prefer my kludge (convert to a character representation of a date) to yours. I think it shows the desired result more clearly. I also discovered that
>ldDate = DATE()
>SQLEXEC(lnHandle,"SELECT * FROM myTable WHERE DATE(dtField) = CAST(?ldDate as date)")
>also works. I don't know which is the fastest expression (and don't think the difference would be at all significant) but I think this is the most clear, but that's a subjective opinion.

I know that in SQL Server the way I suggested is much better any other alternative. I expect it's better in MySQL too.
If it's not broken, fix it until it is.


My Blog
Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform