嗨,我有一段代码在数据库中的 year_start 和 year_end 字段之间查找一年。
这是我的代码。
SELECT * from $tableName where '$year' BETWEEN start_year AND end_year; LIMIT $start, $limit
现在这似乎工作正常,除非年份等于 end_year 值,例如,如果我正在搜索 2002 并且年末值为 2002,那么它不会返回任何结果。
任何建议,将不胜感激。
谢谢
如果start_year
和end_year
类型是
INT
$sql = '
SELECT *
FROM '.$tableName.'
WHERE TRUE
AND '.$year.' BETWEEN start_year AND end_year
LIMIT '.$start.', '.$limit.'
;
';
日期
$sql = '
SELECT *
FROM '.$tableName.'
WHERE TRUE
AND '.$year.' BETWEEN YEAR(start_year) AND YEAR(end_year)
LIMIT '.$start.', '.$limit.'
;
';
VARCHAR
需要转换它们
$sql = '
SELECT *
FROM '.$tableName.'
WHERE TRUE
AND '.$year.' BETWEEN
CAST(start_year AS UNSIGNED) AND CAST(end_year AS UNSIGNED)
LIMIT '.$start.', '.$limit.'
;
';
只需在执行查询之前比较 start_year 和 end_year。
// If they're the same,
If start_year == end_year{
select * from $tableName where '$year' = start_year; LIMIT $start, $limit;
// more code
}
// if not, use your query
else{
SELECT * from $tableName where '$year' BETWEEN start_year AND end_year; LIMIT $start, $limit;
// more code
}
不是最漂亮的解决方案,但仍然是一个不错的解决方法。