SELECT *
FROM `reg`
WHERE registration_date
BETWEEN '29 /01 /15'
AND '30 /01 /15'
我正在使用此查询从数据库中获取数据,它为我提供了数据,但是当我更改日期时,例如BETWEEN '29/01/15' AND '06/03/15'
,它显示 nothing < / em>的。
我使用的数据类型为varchar
。
有人可以帮我解决这个错误吗?
答案 0 :(得分:2)
来自 MySQL手册:
DATE类型用于具有日期部分但没有时间部分的值。
MySQL以'YYYY-MM-DD'格式检索和显示DATE值。
支持的范围是'1000-01-01'到'9999-12-31'。
您需要更改您用于日期的格式。
尝试
SELECT * FROM reg WHERE registration_date BETWEEN '2015-01-29' AND '2015-01-30'
答案 1 :(得分:0)
使用WHERE条件,如表格中的日期保存在&#34; Y-m-d&#34;格式:
WHERE registration_date BETWEEN '2015-01-29' AND '2015-01-30'
答案 2 :(得分:0)
以下是您的解决方案,我也使用这些方法来获取使用日期的数据,请尝试它可能会帮助您: -
$start = date('Y-m-d H:i:s', strtotime('29-01-2015'));
$end = date('Y-m-d H:i:s', strtotime('30-01-2015'));
SELECT *
FROM `reg`
WHERE registration_date >= $start AND
registration_date <= $end;
答案 3 :(得分:0)
实际上您使用的数据类型为stat
,因此它介于和之间将无效。它显示你的结果,因为它与二进制数字进行比较。所以它显示了两个二进制数字之间的结果。您需要将数据类型更改为日期和时间。
答案 4 :(得分:0)
您的查询仅有效,因为在您的情况下,BETWEEN / AND仅检查字符串中使用的字符的十六进制码是否在彼此之间。您还将得到以下结果:
SELECT * FROM `reg` WHERE registration_date BETWEEN '29/dur' AND '30/3.13159'
但是,如果您希望将查询视为实际日期,我建议您使用:
SELECT * FROM `reg`
WHERE str_to_date(registration_date,'%d/%m/%Y')
BETWEEN
str_to_date('29/01/15','%d/%m/%Y') AND str_to_date('30/01/15','%d/%m/%Y')