2010-09-29 67 views
140

下面的查詢:如何使用MySQL在兩個日期之間進行查詢?

SELECT * FROM `objects` 
WHERE (date_field BETWEEN '2010-09-29 10:15:55' AND '2010-01-30 14:15:55') 

回報什麼。

我應該擁有足夠多的數據以供查詢工作。我究竟做錯了什麼?

+14

請謹慎使用BETWEEN,因爲'min'和'max'值都被認爲在範圍內,所以不會處理兩次或者是'min'和'最大'值(邊緣情況)。例如,2010-09-29 00:00:00之間的日期將在2010-09-28 00:00:00和2010-09-29 00:00:00之間,還有** _之間'2010-09-29 00:00:00'和'2010-09-30 00:00:00'_ – minipif 2015-03-27 01:44:32

+0

是啊,他說什麼^^ – 2016-11-04 09:37:26

回答

303

你的第二個日期是你們第一次約會之前(即你是2010年9月29日和2010年1月30日之間查詢)。嘗試扭轉日期的順序:

SELECT * 
FROM `objects` 
WHERE (date_field BETWEEN '2010-01-30 14:15:55' AND '2010-09-29 10:15:55') 
+1

謝謝。我錯過了'約會日期。 – xeo 2016-02-06 21:08:01

+0

我確實知道這一點,但現在有更新的問題。我試圖使用BETWEEN進行更新,如果它的工作方式相同? – 2017-06-02 09:55:01

+1

@IngusGraholskis:where語句在'select'或'update'語句中應該是一樣的。 – T30 2017-06-30 12:37:20

10

date_field類型datetime?你也需要先把收銀者的日期。

它應該是:

SELECT * FROM `objects` 
WHERE (date_field BETWEEN '2010-01-30 14:15:55' AND '2010-09-29 10:15:55') 
0

嘗試圍繞切換日期:

2010-09-29 > 2010-01-30? 
1

可能是與服務器端或客戶端的最新配置的問題。 當我用西班牙文,法文或其他方式配置主機時,我發現這是多個數據庫的常見問題...可能會影響格式dd/mm/yyyy或mm/dd/yyyy。

+2

問題在於較早的日期是在較新的日期之前列出的。 – theninjagreg 2015-06-24 20:09:04

20

您的查詢應該有日期作爲

select * from table between `lowerdate` and `upperdate` 

嘗試

SELECT * FROM `objects` 
WHERE (date_field BETWEEN '2010-01-30 14:15:55' AND '2010-09-29 10:15:55') 
3

DATE()是僅提取日期或日期的日期部分MySQL的函數/時間表達

SELECT * FROM table_name WHERE DATE(date_field) BETWEEN '2016-12-01' AND '2016-12-10'; 
+0

你*可以*添加一個解釋,這樣人們就會明白你在做什麼。 – 2016-12-15 06:39:01

相關問題