2017-04-19 20 views
1

我有一個查詢,我必須檢查日期過濾搜索和我的查詢如下created是字段和其包含日期時間和根據日期選擇器我已經得到「dmY 「甲 請幫我解決這個錯誤在data_formate和數據時間sql查詢錯誤

SELECT o.*,u.first_name,u.last_name,u.email 
FROM tbl_orders AS o 
LEFT JOIN tbl_users AS u ON o.customer_id = u.id 
WHERE 1=1 AND date_format(o.created,'%d-%m-%Y') >= "01-04-2017" 
AND date_format(o.created,'%d-%m-%Y') <= "01-05-2017" 
ORDER BY id ASC LIMIT 0 , 25 

我發現結果爲零 請幫我

感謝

+0

嘗試改變「%D-%間%Y」 .. –

+0

感謝答覆,但還是給了我零,我有兩個檢查甲酸但:( – Darshan

+0

顯示樣本數據在這裏是 –

回答

0

當你給予01-04-2017格式爲dd-mm-yyyy的格式時。但在日期時間字段,我們有YYYY-MM-DD H:我:s格式,那麼試試這個:

DATE_FORMAT(o.created,'%d-%m-%Y') 

或者你可以簡單地改變像下面使用BETWEENSTR_TO_DATE

WHERE 1=1 AND o.created BETWEEN STR_TO_DATE('01-04-2017','%d-%m-%Y') AND 
AND STR_TO_DATE('01-05-2017','%d-%m-%Y') 
+0

如此我首先嚐試這種格式「%d-%m-%y」但我沒有得到resut,所以我改變,但我已經嘗試,但它的零resut – Darshan

+0

'Y'必須是大寫。 –

+0

是的,先生Y是大寫已經完成 – Darshan

0

你DATE_FORMAT是不恰當月

%d日,數字(00-31)

%m月份,數值(00-12)

%Y年,數字,四位

所以你的日期格式功能應該是

date_format(o.created,'%d-%m-%Y') 
+0

謝謝,但我也嘗試過這一個也是,但其給予零resut – Darshan

1

您使用的是不正確的日期文字。您應該比較created datetime列與'2017-05-01'。試試這個完整的查詢:

SELECT o.*, u.first_name, u.last_name, u.email 
FROM tbl_orders AS o 
LEFT JOIN tbl_users AS u 
    ON o.customer_id = u.id 
WHERE o.created BETWEEN '2017-04-01' AND '2017-05-01' 
ORDER BY id ASC LIMIT 0, 25 

你並不需要在created列中使用DATE_FORMAT(),假設你正確地告訴我們,這是日期時間,因爲它是已經日期類型。另外,在SQL中編寫字符串文字時,通常應該使用單引號,而不是雙引號。

請參閱MySQL documentation瞭解有關日期文字可接受格式的更多信息。

0

更改日期:

從:

AND date_format(o.created,'%y-%m-%d') >= "01-04-2017" 
AND date_format(o.created,'%y-%m-%d') <= "01-05-2017" 

到:DATE_FORMAT的

AND date_format(o.created,'%y-%m-%d') >= "2017-01-04" 
AND date_format(o.created,'%y-%m-%d') <= "2017-01-05" 
+0

我也檢查這看到下面的查詢 – Darshan

+0

SELECT o。*,u.first_name,u.last_name,u.email FROM tbl_orders AS o LEFT JOIN tbl_users AS u ON o.customer_id = u.id WHERE 1 = 1 AND date_format(o.created,'%y-%m-%d')> =「2017-04-01」AND date_format(o.created,'%y- %m-%d')<=「2017-05-01」ORDER BY id ASC LIMIT 0,25 – Darshan

0

返回類型()函數是VARCHAR。所以它不能用於比較。使用STR_TO_DATE像下面

STR_TO_DATE(o.created, '%Y-%m-%d') <= STR_TO_DATE("01-05-2017", '%d-%m-%Y')