在两个数据库字段之间查找日期

时间:2012-11-21 16:37:53

标签: php mysql

嗨我有一段代码,它在一年之间查找数据库中的字段,即year_start& year_end。

这是我的代码。

  SELECT * from $tableName where '$year' BETWEEN start_year AND end_year; LIMIT $start, $limit

现在这似乎工作正常,除非年份等于end_year值,例如,如果我正在搜索2002年并且结束年份值是2002,那么它不会返回结果。

任何建议都将不胜感激。

由于

2 个答案:

答案 0 :(得分:1)

如果start_yearend_year类型为

<强> INT

$sql = '
SELECT *
FROM '.$tableName.'
WHERE TRUE
  AND '.$year.' BETWEEN start_year AND end_year
LIMIT '.$start.', '.$limit.'
;
';

<强> DATE

$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.'
;
';

答案 1 :(得分:0)

在执行查询之前,只需比较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
}

不是最漂亮的解决方案,但仍然是一个很好的解决方法。