2017-06-17 75 views
0
select Artikel from liste_vorbestellungen 
where Termin_fuer_Abholung = 2017; 

我有一張桌子,我必須選擇所有日期爲2017年的文章,這已經有效,我的probelm現在是,我的日期在表中給出日,月和年,我如何選擇2017年的文章,而不僅僅是給出年份?選擇日期以及條款

+1

這可以通過使用返回日期年份的函數來完成,但該函數可能會根據您使用的RDBMS而變化,所以請添加一個指定它的標記。 –

回答

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^ 
+0

非常感謝:) – Tikotakatok

+0

在標準的SQL中,這將是'提取(年份來自termin_fuer_abholung)'(Oracle,Postgres和Firebird不支持'year()'只有標準的'extract()'函數) –

+0

@a_horse_with_no_name瞭解了一些東西今天,謝謝!編輯到我的答案。 – Mureinik

1

通常,我t更好地用於顯式比較日期而不是函數。爲什麼?因爲這允許優化器使用索引。所以,儘管Mureinik的答案是正確的,可以在下面的(在某些circumtances)有更好的表現:

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)採取指數的優勢。