2016-11-09 12 views
-1

私は興味のある年と月の可能な組み合わせをすべて見つける必要があるSQLクエリで助けが必要です。 o.orderdateのタイプがDATETIMEの場合は、ここに取ります。SQLクエリで年と月の組み合わせを選択する方法は?

SELECT 
    o.orderdate 
FROM 
    Sales.Orders o 
WHERE 
    (YEAR(o.orderdate) IN (2007, 2008)) 
    AND (MONTH(o.orderid) IN (1, 2, 3)) 
ORDER BY 
    o.orderdate; 

この結果、月が選択されていないことがわかります。

2007-07-08 00:00:00.000 
2007-07-09 00:00:00.000 
2007-07-09 00:00:00.000 
2007-07-10 00:00:00.000 
2007-07-11 00:00:00.000 
2007-07-11 00:00:00.000 
2007-07-14 00:00:00.000 
2007-07-15 00:00:00.000 
2007-07-16 00:00:00.000 
2007-07-16 00:00:00.000 
2007-07-17 00:00:00.000 
2007-07-18 00:00:00.000 
2007-07-18 00:00:00.000 
2007-07-21 00:00:00.000 
2007-07-22 00:00:00.000 
2007-07-22 00:00:00.000 
2007-07-23 00:00:00.000 
2007-07-24 00:00:00.000 
2007-07-25 00:00:00.000 
2007-07-25 00:00:00.000 
2007-07-28 00:00:00.000 
2007-07-29 00:00:00.000 
2007-07-29 00:00:00.000 
2007-07-30 00:00:00.000 
2007-07-31 00:00:00.000 
2007-07-31 00:00:00.000 
2007-08-01 00:00:00.000 
2007-08-04 00:00:00.000 
2007-08-05 00:00:00.000 
2007-08-05 00:00:00.000 
2007-08-06 00:00:00.000 
2007-08-07 00:00:00.000 
2007-08-07 00:00:00.000 
2007-08-08 00:00:00.000 
2007-08-11 00:00:00.000 
2007-08-11 00:00:00.000 
2007-08-12 00:00:00.000 
2007-08-12 00:00:00.000 
2007-08-13 00:00:00.000 
2007-08-14 00:00:00.000 
+3

「MONTH(OrderDate)」ではなく「MONTH(Orderid)」を使用している可能性がありますか? – BJones

+0

'(MONTH(o.orderid)' ??? –

+0

jesus、私は完全にそれを逃した:/ どうにかして、それは答えを持っているので、もうそれを削除することはできません – Daniel

答えて

0

日付範囲内の日付のために選択している場合は、MONTH()関数に間違ったパラメータを入れていることが

SELECT 
    o.orderdate 
FROM Sales.Orders o 
WHERE (YEAR(o.orderdate) IN (2007, 2008)) 
    AND (MONTH(o.orderdate) IN (1, 2, 3)) 
ORDER BY o.orderdate; 

する必要があります代わりに、との不平等を使用するのがベストプラクティスです完全日

SELECT 
    o.orderdate 
FROM Sales.Orders o 
WHERE (o.orderdate < '2007-01-01' AND o.orderdate < '2007-03-01') 
    OR (o.orderdate < '2008-01-01' AND o.orderdate < '2008-03-01') 
ORDER BY o.orderdate; 
0

それはorderdateの代わりorderidではないでしょうか?

SELECT 
o.orderdate 
FROM Sales.Orders o 
WHERE (YEAR(o.orderdate) IN (2007, 2008)) 
    AND (MONTH(o.orderdate) IN (1, 2, 3)) 
ORDER BY o.orderdate; 
関連する問題