用where子句选择日期

时间:2017-06-17 10:19:47

标签: sql

select Artikel from liste_vorbestellungen 
where Termin_fuer_Abholung = 2017;

我有一张桌子,我必须选择2017年的所有文章,这已经有效,我现在的问题是,我在表格中的日期是按天,月和年给出的,我怎样才能选择带有...的文章2017年的时候不仅仅是这一年?

2 个答案:

答案 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)

您没有使用任何标记您的问题,但大多数都支持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^