data_formate和datatime中的SQL查询错误

时间:2017-04-19 06:48:44

标签: php mysql sql

我有一个查询,我必须检查日期过滤搜索和我的查询,如下所示created 是字段,其包含日期时间,并且根据日期选择器我已经获得“dmY”甲酸盐 请帮我解决这个错误

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  

我找到零结果 请帮帮我

由于

4 个答案:

答案 0 :(得分:1)

您使用的日期文字不正确。您应该将created日期时间列与'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

您不需要在DATE_FORMAT()列上使用created,假设您正确地告诉我们它是日期时间,因为它已经一个日期类型。此外,在SQL中编写字符串文字时,通常应使用单引号而不是双引号。

有关日期文字的可接受格式的详细信息,请参阅MySQL documentation

答案 1 :(得分:0)

您的date_format不正确

%d日期,数字(00-31)

%m月,数字(00-12)

%Y年,数字,四位数

所以你的日期格式功能应该是

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

答案 2 :(得分:0)

更改日期:

发件人:

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

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

答案 3 :(得分:0)

date_format()函数的返回类型是VARCHAR。所以它不能用于比较。使用STR_TO_DATE,如下所示

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