2016-08-19 35 views
0

表:訂單查詢成果

Column  Datatype 
------  -------- 
orderid  int 
orderdate date 
customerid int 

我們需要查詢其返回放置在2016年6月

我試圖

Select orderid 
    from Orders 
    where orderdate between 2016-06-01 and 2016-06-30 

它的訂單給出錯誤,因爲與int作品之間only.How現在要做達到這個目的?

回答

1

我想指定日期範圍時你缺少'。另外,你需要投orderdateDATE。究其原因是因爲如果你有一個像「2016年6月30日12:34:56」的數據,BETWEEN '2016-06-01' and '2016-06-30'不會返回的記錄。

Select orderid 
from Orders 
where CONVERT(DATE, orderdate) between '2016-06-01' and '2016-06-30' 
1

您可以使用函數YEAR()從月給定日期和MONTH()提取的一年。

SELECT orderid FROM Orders 
WHERE YEAR(orderdate) = 2016 and MONTH(orderdate) = 6 
0

BETWEEN不起作用與int而已,你可以用它來date列了。請嘗試以下操作:

SELECT 
    [orderid] 
FROM [Orders] 
WHERE [orderdate] BETWEEN '2016-06-01' AND '2016-06-30' 

或者你可以利用的YEARMONTH功能:

SELECT 
    [orderid] 
FROM [Orders] 
WHERE YEAR([orderdate]) = 2016 
     AND MONTH([orderdate]) = 6 

這種方法可以,但是,導致性能問題,因爲沒有使用索引。

1
Select orderid from Orders where DATEADD(day, -1, convert(date, 
orderdate)) between DATEADD(day, -1, convert(date, 2016-06-01)) and 
DATEADD(day, -1, convert(date, 2016-06-30)) 
1

這也應該工作:

select orderid 
from orders 
where orderdate >= '2016-06-01' 
and orderdate < '2016-07-01' 
0

請使用日期圍繞單引號

Select orderid 
    from Orders 
    where orderdate between '2016-06-01' and '2016-06-30'