Dúvida com BETWEEN SQL

133 views
Skip to first unread message

Alan Nogueira

unread,
Nov 5, 2013, 2:59:32 PM11/5/13
to list...@googlegroups.com
Galera, gostaria de uma ajuda, porque que quando executo:

SELECT COUNT(*) AS `numrows` FROM (`form_faleconosco`) WHERE `date` BETWEEN '2013-11-04' AND '2013-11-05'

os dados do dia 2013-11-05 não me retorna? Eu gostaria que retornasse tudo do dia 04 e tudo do dia 05

--
Alan Nogueira


Douglas Bezerra Possas

unread,
Nov 5, 2013, 3:13:37 PM11/5/13
to list...@googlegroups.com
Alan, creio que o between pegue apenas o que está ENTRE as datas, e não nas datas. Ou seja, ele é exclusivo.

Você teria que fazer algo como data >= X AND data <= Y


--
--
============================================================
JQUERY MAGAZINE > http://www.jquerymagazine.com.br
--
PHP MAGAZINE > http://www.phpmagazine.com.br
--
LISTA NODE.JS > https://groups.google.com/group/lista-nodejs?hl=pt-br
--
AJAX-BRASIL > http://groups.google.com/group/ajax-brasil
--
PYTHON-GOOGLE > http://groups.google.com.br/group/python-google
--
DOTNET-BRASIL > http://groups.google.com.br/group/dotnet_br
============================================================
 
---
Você está recebendo esta mensagem porque se inscreveu no grupo "LISTA PHP" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para listaphp+u...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
Douglas Bezerra Possas
Programador PHP
Campo Grande  – MS – Brasil
Cel.: 67 9280 5866

Skype: douglas.systematica

Ivo Sestren Junior

unread,
Nov 5, 2013, 3:17:18 PM11/5/13
to list...@googlegroups.com
Se o campo é de data e hora, ele traz até as 00:00:00 do dia especifico.
Tente colocar
SELECT COUNT(*) AS `numrows` FROM (`form_faleconosco`) WHERE `date` BETWEEN '2013-11-04 00:00:00' AND '2013-11-05 23:59:59'

Flavio Neves

unread,
Nov 5, 2013, 3:18:39 PM11/5/13
to list...@googlegroups.com
o field é datetime, date, timestamp oque ?

Bruno Barroso

unread,
Nov 5, 2013, 3:21:11 PM11/5/13
to list...@googlegroups.com
Alan,

Na sua coluna 'date' qual o tipo de dado? date ou datetime?
Se for datetime você terá que fazer o between passando tambem as horas, ex: between '2013-01-01 00:00:00' and '2013-01-05 23:59:59', faça o teste e nos retorne!

Abraços!

--

Bruno Barroso Rodrigues
Analista de Sistemas Totvs - Odonto System
Sócio/Partner - Conceito Solutions of Techlogy
( 55 (85) 8684-2880
( 55 (85) 9952-8527
+  bruno...@gmail.com

"Achieve your goals by being yourself"

Mario Rodrigues

unread,
Nov 5, 2013, 3:30:32 PM11/5/13
to list...@googlegroups.com
eu usaria o trunc pra facilitar! (caso tenha data e hora e a hora não seja importante)

Alan Nogueira

unread,
Nov 5, 2013, 7:05:49 PM11/5/13
to list...@googlegroups.com
Está como timestamp,
veja o print:



2013/11/5 Mario Rodrigues <marioir...@gmail.com>



--
Alan Nogueira


Douglas Bezerra Possas

unread,
Nov 6, 2013, 6:21:31 AM11/6/13
to list...@googlegroups.com
Alan, creio que o between pegue apenas o que está ENTRE as datas, e não nas datas. Ou seja, ele é exclusivo.

Você teria que fazer algo como data >= X AND data <= Y

[2]

Cassiano Ricardo Mourão

unread,
Nov 6, 2013, 6:23:19 AM11/6/13
to list...@googlegroups.com
Já vi que mataram a charada, mas só pra deixar claro que BETWEEN é "inclusivo" e não "exclusivo".


Em 5 de novembro de 2013 21:05, Alan Nogueira <alan.s...@gmail.com> escreveu:

Cassiano Ricardo Mourão

unread,
Nov 6, 2013, 6:24:38 AM11/6/13
to list...@googlegroups.com
Então vai ter que converter pra data do dia (05/11) OU o intervalo até 23:59:59 como disseram.


Em 5 de novembro de 2013 21:05, Alan Nogueira <alan.s...@gmail.com> escreveu:

Leonel Knijnik

unread,
Nov 5, 2013, 3:14:38 PM11/5/13
to list...@googlegroups.com
Teu campo é DATE ou DATETIME?

Se for DATETIME, usa BETWEEN '2013-11-04 00:00:00' AND '2013-11-05 23:59:59'


--
--
============================================================
JQUERY MAGAZINE > http://www.jquerymagazine.com.br
--
PHP MAGAZINE > http://www.phpmagazine.com.br
--
LISTA NODE.JS > https://groups.google.com/group/lista-nodejs?hl=pt-br
--
AJAX-BRASIL > http://groups.google.com/group/ajax-brasil
--
PYTHON-GOOGLE > http://groups.google.com.br/group/python-google
--
DOTNET-BRASIL > http://groups.google.com.br/group/dotnet_br
============================================================
 
---
Você está recebendo esta mensagem porque se inscreveu no grupo "LISTA PHP" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para listaphp+u...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
Leonel Knijnik
Porto Alegre - RS - Brasil
E-mail: djald...@gmail.com

URBANA LEGIO OMNIA VINCIT

"Nenhum argumento racional terá um efeito racional em pessoas que não querem tomar atitudes racionais".
(Karl R. Popper)

Bruno Kuhlmann Cechet

unread,
Nov 6, 2013, 6:42:48 AM11/6/13
to list...@googlegroups.com
O campo `date` é date mesmo ou datetime? 


Em 5 de novembro de 2013 17:59, Alan Nogueira <alan.s...@gmail.com> escreveu:
--

Bruno Kuhlmann Cechet

unread,
Nov 6, 2013, 6:43:32 AM11/6/13
to list...@googlegroups.com
Acho que a minha resposta chegou tarde demais, hehe 
Favor desconsiderar, ja responderam.

abs

Alan Nogueira

unread,
Nov 6, 2013, 9:16:52 AM11/6/13
to list...@googlegroups.com
Galera, muito obrigado pela ajuda, consegui resolver com a dica do BETWEEN '2013-11-04 00:00:00' AND '2013-11-05 23:59:59'

meu problema até então, é que o cliente não entende que é ENTRE, então ele quer da data tal até a data tal, entendeu?

Obrigado a todos
--
Alan Nogueira


Cassiano Ricardo Mourão

unread,
Nov 6, 2013, 9:26:04 AM11/6/13
to list...@googlegroups.com
Se ao invés de timestamp você estivesse usando datetime, fazendo trunc(campo) between data1 and data2 funcionaria. Ou um cast(). Enfim...
 
Já dissemos que o between pega os intervalos TAMBÉM, não é só o que está entre. O SEU problema é comparar uma data com timestamps (que são data/hora).

Cassiano Ricardo Mourão

unread,
Nov 6, 2013, 9:28:13 AM11/6/13
to list...@googlegroups.com
E antes que novamente venham dizer que o BETWEEN é "apenas entre"/exclusivo:
 
 
 
expr BETWEEN min AND max

If expr is greater than or equal to min and expr is less than or equal to max, BETWEEN returns 1, otherwise it returns 0. This is equivalent to the expression (min <= expr AND expr <= max) if all the arguments are of the same type

Reply all
Reply to author
Forward
0 new messages