BETWEENSözdizimindeki ikinci tarih referansının sihirli bir şekilde "günün sonu" olarak kabul edildiği varsayılmıştır, ancak bu doğru değildir .
yani bu beklenen bir durumdu:
Vakalardan SEÇ *
NEREDE ARASINDAKİ created_at başında '2013-05-01' VE sonuna '2013-05-01'
ama asıl olan şu:
Vakalardan SEÇ *
'2013-05-01 00: 00: 00 + 00000 ' VE '2013-05-01 00: 00: 00 + 00000 '
ARASINDA NEREDE yaratıldı
Hangi eşdeğer olur:
SELECT * NEREDEN OLDUĞUNDA OLDUĞU OLAYLAR_t = '2013-05-01 00: 00: 00 + 00000 '
Sorun hakkında algıları / beklentilerin biridir BETWEENhangi gelmez düşük bir değer ve aralıktaki üst değerler İKİ içerir, ancak vermez sihirli bir tarih veya "sonuna" "başlangıcı" olun.
BETWEEN tarih aralıklarına göre filtrelerken kaçınılmalıdır.
Daima kullanmak >= AND <yerine
Vakalardan SEÇ *
NEREDE (created_at > = '20130501' VE created_at < '20130502')
parantezler burada isteğe bağlıdır, ancak daha karmaşık sorgularda önemli olabilir.