È stato ipotizzato che il riferimento alla seconda data nella BETWEEN
sintassi sia magicamente considerato la "fine della giornata", ma ciò non è vero .
cioè questo era previsto:
SELEZIONA * DA Casi
DOVE creato_at TRA l'inizio di '2013-05-01' E la fine di '2013-05-01'
ma quello che succede davvero è questo:
SELEZIONA * DA Casi
DOVE creato_at TRA '2013-05-01 00: 00: 00 + 00000 ' AND '2013-05-01 00: 00: 00 + 00000 '
Che diventa l'equivalente di:
SELEZIONA * DA Casi DOVE create_at = '2013-05-01 00: 00: 00 + 00000 '
Il problema è una delle percezioni / aspettative circa BETWEEN
, che non includono sia il valore più basso ed i valori superiori della gamma, ma non magicamente fare una data "all'inizio di" o "alla fine di".
BETWEEN
dovrebbe essere evitato quando si filtra per intervalli di date.
Usa sempre>= AND <
invece
SELEZIONA * DA Casi
WHERE (created_at > = '20.130.501' E created_at < '20.130.502')
le parentesi sono facoltative qui, ma possono essere importanti nelle query più complesse.