我有一个数据库,用户可以在其中输入日期,其中包括下拉日历,日期格式为 21-NOV-2012 格式。有没有办法用日期范围搜索数据库?我目前使用以下搜索日期::
sql ="SELECT * FROM ircb WHERE date LIKE '%$term1%' AND date LIKE '%$term2%' LIMIT $start_from, 15";
term1 是 month 和 term 2 是 year ,这不允许仅当月的月份内的日期范围。任何帮助表示赞赏,谢谢
我有一个数据库,用户可以在其中输入日期,其中包括下拉日历,日期格式为 21-NOV-2012 格式。有没有办法用日期范围搜索数据库?我目前使用以下搜索日期::
sql ="SELECT * FROM ircb WHERE date LIKE '%$term1%' AND date LIKE '%$term2%' LIMIT $start_from, 15";
term1 是 month 和 term 2 是 year ,这不允许仅当月的月份内的日期范围。任何帮助表示赞赏,谢谢
我知道这并不能真正解决您的问题,但我想这是一个测试(并且您可以访问数据库)并且告诉您更好的方法会冒着被激怒的风险,因为如果不告诉您我会感到内疚正确的方法是什么:
您的数据库中应该有一个日期类型字段(我假设是 mysql)并将整个日期存储在该字段中,并且 mysql 可以使用该日期进行搜索(通常标准日期格式为 YYYY-MM-DD)。
你只需要这样做:
SELECT * FROM TABLE WHERE date > 'your date';
or ........................... < 'your date';
or .................WHERE date BETWEEN 'date1' AND 'date2';
它将允许您以更容易和人类可读的方式执行这些操作。
如果您有兴趣,还可以查看日期时间,因为您可以这样做,但当天的时间也包含在同一字段中!:D
仔细查看字段类型,因为保持数据库健康和优化至关重要。
date >= '$term2-$term1-01' AND date < DATE_ADD( '$term2-$term1-01', INTERVAL 1 MONTH)
我认为这应该有效。
sql ="SELECT * FROM ircb WHERE date BETWEEN '$term1' AND '$term2' LIMIT $start_from, 15";
BETWEEN
将让您获取范围日期,您可以删除那些LIKE
.