所以,我正在尝试查询两个日期之间的所有数据。我的mysql表上的日期字段采用以下格式:(dd-mm-yyy)。所以,我正在使用php。
我做了这样的事情:
SELECT *
FROM `sells`
WHERE date
BETWEEN '01-01-2013'
AND '04-02-2014'
当然这个日期将是变量,但是对于phpmyadmin的测试,我没有达到预期的结果。它给了我这个日期的所有数据,让我来看看。
03-01-2014
03-01-2014
03-01-2014
01-02-2014
01-02-2014
03-02-2014
03-02-2014
03-02-2014
03-02-2014
当然,所有其他数据,但它无关紧要。
我想在一段时间之间提供所有数据,我该如何修复此错误?
感谢。
添加了show table。 它用我的母语,所以。 (它是一个国内系统,为我的家庭企业
CREATE TABLE `vendas` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_cliente` int(11) NOT NULL,
`cliente` varchar(255) CHARACTER SET latin1 NOT NULL,
`produto` varchar(255) CHARACTER SET latin1 NOT NULL,
`quantidade` int(255) NOT NULL,
`valor` varchar(255) CHARACTER SET latin1 NOT NULL,
`total` varchar(255) CHARACTER SET latin1 NOT NULL,
`metodo` varchar(255) CHARACTER SET latin1 NOT NULL,
`data` varchar(255) CHARACTER SET latin1 NOT NULL,
`status` int(255) NOT NULL DEFAULT '1',
`data_pagamento` varchar(255) CHARACTER SET latin1 NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=103 DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci
答案 0 :(得分:4)
当您将日期存储为字符串而不是日期时,会发生这种情况。你得到了查询地狱。
您需要将字符串日期转换为正确的格式,然后将搜索条件更改为正确的日期格式(YYYY-MM-DD):
WHERE STR_TO_DATE(date, "%d-%m-%Y")
BETWEEN '2013-01-01'
AND '2014-02-04'
答案 1 :(得分:-2)
试试这个 -
SELECT *
FROM `sells`
WHERE DATE_FORMAT(<your column name>,'%m-%d-%Y') >= '01-01-2013'
and DATE_FORMAT(<your column name>,'%m-%d-%Y') <= '04-02-2014';
这也有用 -
SELECT *
FROM `sells`
WHERE <your column name> between DATE_FORMAT('01-01-2013','%m-%d-%Y')
and DATE_FORMAT('04-02-2014','%m-%d-%Y');