select Artikel from liste_vorbestellungen
where Termin_fuer_Abholung = 2017;
我有一张桌子,我必须选择2017年的所有文章,这已经有效,我现在的问题是,我在表格中的日期是按天,月和年给出的,我怎样才能选择带有...的文章2017年的时候不仅仅是这一年?
答案 0 :(得分:1)
一般来说,最好用日期而不是函数进行比较。为什么?因为这允许优化器使用索引。所以,虽然Mureinik的答案是正确的,但以下情况(在某些情况下)可以有更好的表现:
select l.Artikel
from liste_vorbestellungen l
where l.Termin_fuer_Abholung >= '2017-01-01' AND
l.Termin_fuer_Abholung < '2018-01-01' ;
特别是,这可以利用liste_vorbestellungen(Termin_fuer_Abholung, Artikel)
上的索引。
答案 1 :(得分:0)
您没有使用任何rdbms标记您的问题,但大多数都支持year
函数从日期中提取一年:
SELECT Artikel
FROM liste_vorbestellungen
WHERE YEAR(Termin_fuer_Abholung) = 2017;
-- Here^
修改:
强>
正如@ a_horse_with_no_name在注释中指出的那样,标准的ANSI-SQL方法是使用extract
函数:
SELECT Artikel
FROM liste_vorbestellungen
WHERE EXTRACT(YEAR FROM Termin_fuer_Abholung) = 2017;
-- Here^