Sql 基于日期时间数据类型查询结果

Sql 基于日期时间数据类型查询结果,sql,sql-server,Sql,Sql Server,表:订单 Column Datatype ------ -------- orderid int orderdate date customerid int 我们需要查询2016年6月的退货订单 我试过了 Select orderid from Orders where orderdate between 2016-06-01 and 2016-06-30 它给出了错误,因为between仅与int一起工作。现在如何实现这一点?您可以使用函数Y

表:订单

Column     Datatype
------     --------
orderid     int 
orderdate   date
customerid  int
我们需要查询2016年6月的退货订单

我试过了

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

它给出了错误,因为between仅与
int
一起工作。现在如何实现这一点?

您可以使用函数
YEAR()
从给定日期提取年份,并为月份提取
MONTH()

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

您可以使用函数
YEAR()
从给定日期提取年份,并使用函数
MONTH()
提取月份

SELECT orderid FROM Orders 
WHERE YEAR(orderdate) = 2016 and MONTH(orderdate) = 6
不能仅使用
int
,您也可以将其用于
date
列。请尝试以下操作:

SELECT 
    [orderid]
FROM [Orders]
WHERE [orderdate] BETWEEN '2016-06-01' AND '2016-06-30'
或者您可以使用
功能:

SELECT 
    [orderid]
FROM [Orders]
WHERE YEAR([orderdate]) = 2016
      AND MONTH([orderdate]) = 6
但是,这种方法可能会导致性能问题,因为没有要使用的索引。

仅对
int
不起作用,您也可以对
日期
列使用它。请尝试以下操作:

SELECT 
    [orderid]
FROM [Orders]
WHERE [orderdate] BETWEEN '2016-06-01' AND '2016-06-30'
或者您可以使用
功能:

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

但是,这种方法可能会导致性能问题,因为没有要使用的索引。

我认为您在指定日期范围时缺少了
。此外,还需要将
orderdate
转换为
DATE
。原因是,如果您有类似“2016-06-30 12:34:56”的数据,“2016-06-01”和“2016-06-30”之间的
将不会返回记录

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

我认为您在指定日期范围时缺少了
。此外,还需要将
orderdate
转换为
DATE
。原因是,如果您有类似“2016-06-30 12:34:56”的数据,“2016-06-01”和“2016-06-30”之间的
将不会返回记录

Select orderid 
from  Orders
where CONVERT(DATE, orderdate) between '2016-06-01' and '2016-06-30'
这也应该起作用:

select orderid
from orders
where orderdate >= '2016-06-01'
and orderdate < '2016-07-01'
选择orderid
从命令
其中订单日期>='2016-06-01'
订单日期<'2016-07-01'
这也应该有效:

select orderid
from orders
where orderdate >= '2016-06-01'
and orderdate < '2016-07-01'
选择orderid
从命令
其中订单日期>='2016-06-01'
订单日期<'2016-07-01'

请在日期周围使用单引号

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

请在日期前后使用单引号

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