类型TIME不是定义的系统类型

时间:2013-10-22 09:44:56

标签: sql time types

我们正在使用Microsoft Server 2012.我需要在给定的时间间隔之间每天汇总一些变量。

以下是简化查询:

    SELECT SUM(SomeVariable) 
    FROM MyTable
    WHERE CAST([wrkActionDate] as TIME) BETWEEN '19:00:00' AND '07:00:00' 

我得到错误:

    Type TIME is not a defined system type.

我猜“Microsoft Server 2012”中不存在数据类型,如果是这样,如何编写查询哪个会做我想做的事情?

P.S:对不起,如果我写了一些写错误。我不计算英语:)

1 个答案:

答案 0 :(得分:1)

应该交换

FROMWHERE

施法时间工作 - 只是尝试使用SQL Server 2012 - 但范围无效(起始值大于结束值) - 你应该这样做:

SELECT SUM(SomeVariable) 
FROM MyTable
WHERE 
  CAST([wkActionDate] AS TIME) BETWEEN '19:00:00' AND '23:59:59' OR
  CAST([wkActionDate] AS TIME) BETWEEN '00:00:00' AND '07:00:00' 

您还可以使用DATEPART

SELECT SUM(SomeVariable) 
FROM MyTable
WHERE 
  DATEPART(hour,[wrkActionDate]) BETWEEN  19 AND 24 OR 
  DATEPART(hour,[wrkActionDate]) BETWEEN 0 AND 7