我有一个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' )