2015-02-09 65 views
0

我有日期的日期時間格式的數據庫是這樣的:日期測距日期不工作 - PHP日期

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。意味着它不會拉第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'); 

回答

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'` 
+0

我該如何在PHP中設置'00:00:00'和'23:59:59'。由於查詢動態地工作。我的意思是在我的日期'fromdate'和'todate'。 – 2015-02-09 06:37:39

+0

@Testing我不能在你的問題中看到任何PHP代碼抱歉。所以我不能說。 – Jens 2015-02-09 06:39:00

+0

這裏是我的查詢:'$ result = $ mysqli-> query(「SELECT * FROM web_matter_attorney WHERE ma_datetime BETWEEN'$ date_from'AND'$ date_to'」)或die(mysqli_error());' – 2015-02-09 06:40:10

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') 

希望這可以幫助你。

+0

您的查詢不適合我。 – 2015-02-09 07:07:20

+0

請嘗試下面的查詢。 SELECT * FROM'web_matter_attorney' WHERE date_format(ma_datetime,'%Y-%m-%d')IN('2015-02-05','2015-02-07') – 2015-02-09 07:25:37