如何在SQL查询中选择年和月的组合?
我需要一些SQL查询方面的帮助,我需要找到我感兴趣的所有可能的年和月的组合。下面是我对它的看法,如何在SQL查询中选择年和月的组合?,sql,sql-server,Sql,Sql Server,我需要一些SQL查询方面的帮助,我需要找到我感兴趣的所有可能的年和月的组合。下面是我对它的看法,o.orderdate的类型是DATETIME 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; 我得到的结果是,在这里我们可
o.orderdate
的类型是DATETIME
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
它是否应该是
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;
您在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;
选择
o、 订单日期
来自销售订单
其中(订单日期<'2007-01-01'和订单日期<'2007-03-01')
或(订单日期<'2008-01-01'和订单日期<'2008-03-01')
按o.orderdate订购;
可能是因为您使用的是MONTH(Orderid)
而不是MONTH(OrderDate)
?(MONTH(o.Orderid)
??天哪,我完全错过了:/无论如何,我不能再删除它了,因为它有答案