如果我想找到在2010年,2011年,2012年,2013年,四年内提供产品的供应商数量。我如何为此构建查询? Between和In运算符不起作用。
答案 0 :(得分:0)
如果不知道有关您的表的信息,如果年份存储在一列中,那么您可以执行类似这样的操作
1.6.2
如果它是DATETIME的一种你可以做的
SELECT * FROM Table WHERE (year = '2010') OR (year = '2011') OR (year = '2012') OR (year = '2013');
是'YYYY-MM-DD HH:MM:SS'是MySQL的默认DATETIME格式,我们不知道你在使用什么,但是你明白了。
答案 1 :(得分:0)
将日期更改为字符,您可以使用IN
:
SELECT COUNT(SUPPLIERS) FROM
(SELECT SUPPLIERS,Count(DISTINCT TO_CHAR(DATETIME_FIELD,'YYYY')) FROM TABLE_NAME
WHERE TO_CHAR(DATETIME_FIELD,'YYYY')
IN
('2010','2011','2012','2013')
GROUP BY SUPPLIERS
HAVING Count(DISTINCT TO_CHAR(DATETIME_FIELD,'YYYY'))=4);
答案 2 :(得分:0)
有很多方法:
select * from TableName
where functionToExtractYear(DateColumn) in(2010, 2011, 2012, 2013)
select * from TableName
where functionToExtractYear(DateColumn) between 2010 and 2013
select * from TableName
where DateColumn >= '2010-01-01' and DateColumn <= '2014-01-01'
最后一个最好至少在Sql Server
中,因为它会在DateColumn
上使用可能的索引。
您尚未指定所使用的引擎,因此functionToExtractYear()
可能因不同产品而异。对于Sql Server
,它是YEAR()
。