我正在尝试更改以下查询,以便我可以根据日期/时间字段查询年份。
SELECT DISTINCT lh.latitudedecimal AS vertreklat, lh.longitudedecimal AS vertreklong,
lh2.latitudedecimal AS aankomstlat, lh2.longitudedecimal AS aankomstlong, count(*) as
countroute, year('vertrekdatum2') AS jaar
from tbl_vluchtgegevens vg
left join tbl_luchthaven lh
on vg.vertrekluchthaven = lh.luchthavenID
left join tbl_luchthaven lh2
on vg.aankomstluchthaven = lh2.luchthavenID
WHERE year('vertrekdatum') = '$jID'
group by lh.latitudedecimal, lh.longitudedecimal, lh2.latitudedecimal,
lh2.longitudedecimal
HAVING COUNT(*) = 1
我在jaar列中显示了正确的值但是当我测试它时,它会出现0值,并且应该有15个出现。
注意:$ jID来自不同页面上php代码的值。
我假设我的子句的WHERE部分的语法不正确。
建议?
答案 0 :(得分:1)
您的where
条款错误。
WHERE year('vertrekdatum') = '$jID'
将vertrekdatum
视为字符串。它没有年份组件。尝试删除单引号:
WHERE year(vertrekdatum) = $jID
仅对字符串和日期常量使用单引号。变量$jID
应该是一个整数,因此它也不需要单引号。
同样适用于select
条款。
答案 1 :(得分:0)
假设你上面发布的代码是php,你可能在where子句中有错误:
WHERE year('vertrekdatum') = "' . $jID . '"
应该做的伎俩。 在你的代码中,$ jID是一个字符串,而不是一个变量。
或
WHERE year('vertrekdatum') = ' . $jID . '
如果是int值
编辑我自己的答案:
WHERE year(vertrekdatum) = ' . $jID . '
因为vertrekdatum是一个字段名,而不是一个字符串