Php 期间之间的查询日期
所以,我试图查询两个日期之间的所有数据。my mysql表上的日期字段的格式如下:(dd-mm-yyy)。因此,我使用php来实现这一点 我做了这样的东西:Php 期间之间的查询日期,php,mysql,sql,date,Php,Mysql,Sql,Date,所以,我试图查询两个日期之间的所有数据。my 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
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
当然,还有其他所有的数据,但都无关紧要
我想在一段时间内获取所有数据,如何修复此错误
谢谢
增加了显示表。
这是我的母语,所以。(这是一个国内系统,用于我的家庭业务
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
这就是当您将日期存储为字符串而不是日期时所发生的情况。您将得到查询地狱 您需要将字符串日期转换为正确的格式,然后将搜索条件更改为正确的日期格式(YYYY-MM-DD): 试试这个-
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';
选择*
从`出售`
其中日期格式(,'%m-%d-%Y')>='01-01-2013'
和日期格式(,“%m-%d-%Y”)你有没有尝试过日期>和日期<?,这对他们没有帮助,因为他们的日期是以非标准格式存储的字符串,而不是日期。如果你将日期存储在YYYY-MM-DD中,即使是字符串,它仍然允许你使用中间值进行选择。但像这样永远不会起作用,只需将所有日期放在电子表格中的一列中,并对该列进行ASC排序。它将我将返回所有分组的结果,从所有01、02、03等开始,不考虑日期!@Matheus你能添加SHOW CREATE TABLE sells;
output,所以我们确定列定义吗?他们在问题中说它们是dd-mm-yyyy格式在我的表上我有dd-mm-yyy格式的存储日期,这样行吗?我尝试过,但没有尝试过。我可以知道否决投票的原因吗。这是100%有效的代码,即使date
具有date
数据类型(并且不会像OP状态那样存储为字符串),此查询仍将返回超出范围的日期,如'01-01-2068
。日期是其表的列名。如果更改列名,则此查询将正常工作
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');