Halihazirda cozumlerin var. Biraz daha katki olsun diye yaziyorum.
Asla datetime() alanlarda = veya >=, <= ile sorgulama yapma (VFP tablosu ise). Neden dersen, datetime() alanlar 2 adet 32 bitlik verinin birlestirilmesiyle real bir deger olarak olarak saklaniyor ( 1.2388238... gibi). Tam sayi kismi gunu, kesir ise gun icindeki zamani tutuyor. Sadece saniye bazina kadar gitmiyor, fazlasi var ama sen gormuyorsun. Sonuc olarak senin gorsel olarak esit gordugun iki datetime farkli olabiliyor. 0, 3, 6, ... 12 ...saatleri problemsiz iken 1, 2, 4, 5 ... saatlerinde esitlik problem yasiyorsun ornek olarak (tam bolunebilirlik nedeniyle, ve binary sistemde kesirlerde kayip kacinilmaz).
Cozum olarak karsilastirmayi, datetime tipinde degil, karaktere cevirip o tipte yapiyorsun:
Visual Fox Pro
index on ttoc( dateTimeAlan, 1 ) tag tarihSaat
ltArama = datetime()
if seek( ttoc(m.ltArama,1), 'tablo', 'tarihSaat' )
* ...
if seek( left(ttoc(m.ltArama,1), 12), 'tablo', 'tarihSaat' ) && Dakika hassasiyetinde
*...
if seek( left(ttoc(m.ltArama,1), 10), 'tablo', 'tarihSaat' ) && Saat hassasiyetinde
*...
if seek( left(ttoc(m.ltArama,1), 8), 'tablo', 'tarihSaat' ) && Gun hassasiyetinde
*...
if seek( left(ttoc(m.ltArama,1), 6), 'tablo', 'tarihSaat' ) && Yil+Ay hassasiyetinde
*...
if seek( left(ttoc(m.ltArama,1), 4), 'tablo', 'tarihSaat' ) && Yil hassasiyetinde
*...
Seek() disinda da >, >= , <= , < ... islemlerinde rahatlikla kullanirsin.