MYSQL查询仅从日期算起一年
我正在尝试更改以下查询,以便可以根据日期/时间字段按年份进行查询MYSQL查询仅从日期算起一年,mysql,Mysql,我正在尝试更改以下查询,以便可以根据日期/时间字段按年份进行查询 SELECT DISTINCT lh.latitudedecimal AS vertreklat, lh.longitudedecimal AS vertreklong, lh2.latitudedecimal AS aankomstlat, lh2.longitudedecimal AS aankomstlong, count(*) as countroute, year('vertrekdatum2'
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部分的语法不正确
建议?您的
where
子句有误
WHERE year('vertrekdatum') = '$jID'
vertrekdatum
被视为字符串。它没有年份组件。尝试删除单引号:
WHERE year(vertrekdatum) = $jID
仅对字符串和日期常量使用单引号。变量$jID
应该是一个整数,因此它也不需要单引号
这同样适用于
select
子句。假设上面发布的代码是php,那么where子句中可能有错误:
WHERE year('vertrekdatum') = "' . $jID . '"
我们应该做到这一点。
在代码中,$jID是一个字符串,而不是一个变量
或
如果它是一个int值
编辑我自己的答案:
WHERE year(vertrekdatum) = ' . $jID . '
由于vertrekdatum是一个字段名,而不是一个字符串,您确定不是您的
使用COUNT(*)=1
子句将它们过滤掉了吗?如果没有,您是否检查了$jiD
的准确值?(注意空格等)。让舒尔vertrekdatum成为一个datetimefield。是的,这正是我所希望的。不断学习真是太好了。谢谢你!
WHERE year(vertrekdatum) = ' . $jID . '