嵌入式SQL请求


Embedded SQL request

我有一个SQL数据库。这里是一个名为Reports的表格它看起来像这样

ID       Date            Year     Title            Links
1        2010-05-03      2010     Report 1         link1.php
2        2010-09-03      2010     Report 2         link2.php
3        2011-01-05      2011     Report 3         link3.php

我想要达到的是这个。我想选择2010-2011年的所有报告,但2010年的可能只有9月份的报告。

现在,我有一个SQL语句选择这两年的所有报告

$sql = "SELECT * FROM Reports WHERE Year = ".$db->escape($jaar1)." OR jaar = ".$db->escape($jaar2);

如何选择Report 2(因为日期是2010年9月)和Report 3(因为日期是2011年)?

我认为最简单的方法是使用BETWEEN...AND操作符。

SELECT * 
FROM `Reports`
WHERE `Date` BETWEEN '2010-09-01' AND NOW()

注意反引号。对于Date尤其重要,因为它是一个保留字。

假设Date列的类型为DATE:

SELECT *
  FROM `Reports`
 WHERE (YEAR(`Date`) = 2010 AND MONTH(`Date`) = 9)
       OR YEAR(`Date`) = 2011
总体样式
where year = 2011
or ( year = 2010 and month = 'September' )