GARANTIR DESCONTO

Fórum Pesquisa Mysql com datetime #461634

21/11/2013

0

Tenho uma tabela no banco de dados que segue:

CREATE TABLE `tabela1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `usuario` varchar(100) DEFAULT NULL,
  `tipo` varchar(255) DEFAULT NULL,
  `ads` int(10) DEFAULT NULL,
  `data` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=11481 DEFAULT CHARSET=latin1;


e quero fazer esta consulta, porém não funciona:

select usuario,data,count(usuario) as total from tabela1 WHERE data BETWEEN ''2013-11-20'' AND ''2013-11-19'' group by usuario ORDER BY count(usuario) DESC


Alguém sabe o que pode ser?
Mauricio Souza,

Mauricio Souza,

Responder

Posts

21/11/2013

William

Colega acredito essa instrução pode ajudá-lo, fazendo um CAST():

SELECT usuario,data,count(usuario) AS total 
FROM tabela1 
WHERE (CAST(data AS DATE) BETWEEN '2013-11-19' AND '2013-11-20') 
GROUP BY usuario ORDER BY count(usuario) DESC
Responder

Gostei + 0

21/11/2013

Alex Lekao

Oi Bom dia!!!

O erro sera que nao aconteceu por causa das aspas duplas?
Responder

Gostei + 0

21/11/2013

Mauricio Souza,

As aspas duplas foi duas ao fazer crtl+c crtl+v. Wiliam mesmo fazendo casting ele retorna 0 resultados.
Responder

Gostei + 0

21/11/2013

Alex Lekao

Oi Mauricio, boa tarde!!!

Vou abrir criar um tabela com a estrutura que me passou para tentar fazer testes melhores.

seria possivel vc postar alguns inserts para testar o select?
Responder

Gostei + 0

21/11/2013

Mauricio Souza,

Tá na mão.
SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for tabela1
-- ----------------------------
DROP TABLE IF EXISTS `tabela1`;
CREATE TABLE `tabela1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `usuario` varchar(100) DEFAULT NULL,
  `tipo` varchar(255) DEFAULT NULL,
  `ads` int(10) DEFAULT NULL,
  `data` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;

-- ----------------------------
-- Records of tabela1
-- ----------------------------
INSERT INTO `tabela1` VALUES ('1', 'usuario1', 'a', '1', '2013-09-02 18:36:19');
INSERT INTO `tabela1` VALUES ('11482', 'usuario2', 'b', '2', '2013-10-02 18:36:32');
INSERT INTO `tabela1` VALUES ('11483', 'usuario3', 'c', '3', '2013-11-22 18:36:41');
INSERT INTO `tabela1` VALUES ('11484', 'usuario4', 'd', '4', '2013-11-22 18:36:46');
INSERT INTO `tabela1` VALUES ('11485', 'usuario5', 'e', '5', '2013-11-13 18:36:51');
INSERT INTO `tabela1` VALUES ('11486', 'usuario6', 'f', '6', '2013-12-18 18:37:03');
Responder

Gostei + 0

21/11/2013

Mauricio Souza,

Mas tem coisa estranha aqui, pois criei uma nova tabela com estrutura igual com a que eu uso em produção, somente com dados diferentes e funcionou.
Responder

Gostei + 0

21/11/2013

William

Colega sua consulta estava estranha, a data inicial estava maior que a data final.

'2013-11-20'' AND ''2013-11-19''


Responder

Gostei + 0

22/11/2013

Alex Lekao

blz... Mauricio...

Obrigado.

vou fazer uns testes e posto aqui... rsrs
Responder

Gostei + 0

22/11/2013

Alex Lekao

Colega sua consulta estava estranha, a data inicial estava maior que a data final.

'2013-11-20'' AND ''2013-11-19''




ai nao vai mesmo ne??? rsrsr

Verifica isso Mairicio, se for so isso que o Willian falou, resolvido o problema.. rsrsr
Responder

Gostei + 0

22/11/2013

Mauricio Souza,

Não é isso não. Isso foi apenas um erro meu ao postar no forum. Esse script que deixei com a criação de tabelas, eu gerei um dump da tabela que tenho em produção, mas a tabela de teste funciona a consulta, e a que está em produção não, lembrando que a de teste é um dump da tabela que está em produção. Vou dar um quebrada de cabeça aqui pra ver se descubro o porque disso.
Responder

Gostei + 0

22/11/2013

Alex Lekao

Oi Mauricio,

Eu percebi o seguinte nos testes que fiz, o intervalo que vc passou nao compreendia aos dados que vc havia enviado nos inserts.

Uma outra coisa que percebi, que no between o ultimo dado, no caso a data maior, deve ter um dia a mais, achei estranho isso, mas tudo bem.

exemplo o usuario6 ele esta com data do dia 18/12, se vc colocar between '2013-11-01' and '2013-12-18' ele nao vai aparecer, vc teria que colocar and '2013-12-19', muito estranho, mas foi o que percebi nos testes que fiz.

ate remontei o script e tal, e aconteceu a mesma coisa, nao sei se tem alguma coisa a ver com o meu mysql ou com o WorkBenq mas tudo bem.

faz uns testes ai e posta pra gente ver.

abraco.

Alex - Lekao
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar