嵌入式SQL请求

时间:2011-09-06 14:11:47

标签: php sql date

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

3 个答案:

答案 0 :(得分:1)

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

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

注意反引号。在Date附近特别重要,因为它是一个保留词。

答案 1 :(得分:1)

假设Date列的类型为DATE

SELECT *
  FROM `Reports`
 WHERE (YEAR(`Date`) = 2010 AND MONTH(`Date`) = 9)
       OR YEAR(`Date`) = 2011

答案 2 :(得分:0)

一般模式

where year = 2011
or ( year = 2010 and month = 'September' )