查询期间之间的日期

时间:2014-02-04 14:13:05

标签: php mysql sql date

所以,我正在尝试查询两个日期之间的所有数据。我的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

2 个答案:

答案 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');