在日期范围内查找日期无效-PHP日期


Finding dates in date range is not working - PHP Date

数据库中的日期格式如下:

53  13  2344    4   Alaska  0   2015-02-03 08:15:37
54  12  567 25  Alabama 0   2015-02-04 08:16:23
55  36  899 1   Arizona 0   2015-02-05 08:17:15
56  35  325 1   West Virginia   0   2015-02-05 08:18:19
57  13  874 2   Alaska  0   2015-02-05 08:21:26
58  37  6563    1   Indiana 0   2015-02-07 08:22:05
59  36  644 2   Tennessee   0   2015-02-07 08:23:54
60  35  435 1   District of Columbia    0   2015-02-05 08:26:10
61  34  324 2   Idaho   0   2015-02-07 08:36:56
62  13  1235    5   Alaska  0   2015-02-07 13:35:23

现在,我想提取2015-02-05 AND 2015-02-07 的记录

我使用的SQL查询是:

SELECT * FROM `web_matter_attorney` WHERE `ma_datetime` BETWEEN '2015-02-05' AND  '2015-02-07'

但它只返回第5天的记录,跳过第7天的记录。这意味着它也没有打破第七名的记录。

我也试过:

SELECT * FROM `web_matter_attorney` WHERE `ma_datetime` >= '2015-02-05' AND `ma_datetime` <= '2015-02-07'

但仍然没有运气和同样的反应。

我的日期名称数据库字段是datetime

我的数据表结构是:

CREATE TABLE `web_matter_attorney` (
  `wma_ID` int(8) NOT NULL AUTO_INCREMENT,
  `att_ID` int(8) NOT NULL,
  `ma_number` varchar(35) NOT NULL,
  `ma_case_ID` int(8) NOT NULL,
  `ma_state` varchar(20) NOT NULL,
  `ma_override` tinyint(1) NOT NULL,
  `ma_datetime` datetime NOT NULL,
  PRIMARY KEY (`wma_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=63 DEFAULT CHARSET=latin1;
-- ----------------------------
-- Records of web_matter_attorney
-- ----------------------------
INSERT INTO `web_matter_attorney` VALUES ('52', '32', '5494984984', '17', 'Virginia', '0', '2015-01-20 14:48:55');
INSERT INTO `web_matter_attorney` VALUES ('53', '13', '2344', '4', 'Alaska', '0', '2015-02-03 08:15:37');
INSERT INTO `web_matter_attorney` VALUES ('54', '12', '567', '25', 'Alabama', '0', '2015-02-04 08:16:23');
INSERT INTO `web_matter_attorney` VALUES ('55', '36', '899', '1', 'Arizona', '0', '2015-02-05 08:17:15');
INSERT INTO `web_matter_attorney` VALUES ('56', '35', '325', '1', 'West Virginia', '0', '2015-02-05 08:18:19');
INSERT INTO `web_matter_attorney` VALUES ('57', '13', '874', '2', 'Alaska', '0', '2015-02-05 08:21:26');
INSERT INTO `web_matter_attorney` VALUES ('58', '37', '6563', '1', 'Indiana', '0', '2015-02-07 08:22:05');
INSERT INTO `web_matter_attorney` VALUES ('59', '36', '644', '2', 'Tennessee', '0', '2015-02-07 08:23:54');
INSERT INTO `web_matter_attorney` VALUES ('60', '35', '435', '1', 'District of Columbia', '0', '2015-02-05 08:26:10');
INSERT INTO `web_matter_attorney` VALUES ('61', '34', '324', '2', 'Idaho', '0', '2015-02-07 08:36:56');
INSERT INTO `web_matter_attorney` VALUES ('62', '13', '1235', '5', 'Alaska', '0', '2015-02-07 13:35:23');

如果以这种方式使用函数ma_datetime BETWEEN '2015-02-05' AND '2015-02-07',则时间部分将设置为00:00:00,因此查询结果将为ma_datetime BETWEEN '2015-02-05 00:00:00' AND '2015-02-07 00:00:00',因此此值2015-02-07 08:22:05超出了在BETWEEN中定义的范围。

更改为

`ma_datetime` BETWEEN '2015-02-05 00:00:00' AND  '2015-02-07 23:59:59'`

您可以使用下面的查询来获得所需的结果。

SELECT * FROM `web_matter_attorney` WHERE DATE_FORMAT('ma_datetime','%Y-%m-d') >= DATE_FORMAT('2015-02-05','%Y-%m-d') AND DATE_FORMAT('ma_datetime','%Y-%m-d') <= DATE_FORMAT('2015-02-07','%Y-%m-d')

希望这对你有帮助。