如何使用php mysql根据日期从数据库中获取数据

时间:2015-12-03 05:14:55

标签: php mysql

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

有人可以帮我解决这个错误吗?

5 个答案:

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