我在数据库中使用日期时间格式的日期:
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'
但它只返回第7个第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');
答案 0 :(得分:1)
如果您以这种方式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'`
答案 1 :(得分:0)
您可以使用以下查询来获取所需的结果。
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')
希望这会对你有所帮助。