MYSQL查询只是从日期开始

时间:2014-02-15 17:30:45

标签: mysql

我正在尝试更改以下查询,以便我可以根据日期/时间字段查询年份。

 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部分的语法不正确。

建议?

2 个答案:

答案 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是一个字段名,而不是一个字符串