Sql server 我需要根据时间从表中选择数据。但我的表字段是datetime

Sql server 我需要根据时间从表中选择数据。但我的表字段是datetime,sql-server,sql-server-2008,tsql,sql-server-2008-r2,Sql Server,Sql Server 2008,Tsql,Sql Server 2008 R2,我需要根据时间从表中选择数据。但我的表字段是datetime。如何仅根据时间从表中选择数据?我可以在where子句中仅使用时间吗?请回答尝试此选项- DECLARE @temp TABLE ( Col1 INT , Col2 DATETIME ) INSERT INTO @temp (Col1, Col2) VALUES (1, '2013-08-29 07:41:43.717'), (2, '2013-08-29 08:41:50.067') SELE

我需要根据时间从表中选择数据。但我的表字段是datetime。如何仅根据时间从表中选择数据?我可以在where子句中仅使用时间吗?请回答尝试此选项-

DECLARE @temp TABLE
(
      Col1 INT
    , Col2 DATETIME
)

INSERT INTO @temp (Col1, Col2)
VALUES 
    (1, '2013-08-29 07:41:43.717'),
    (2, '2013-08-29 08:41:50.067')

SELECT * 
FROM @temp
WHERE CAST(Col2 AS TIME) BETWEEN '08:00' AND '12:00'
输出-

Col1        Col2
----------- -----------------------
2           2013-08-29 08:41:50.067
您可以尝试以下方法:

SELECT CONVERT(TIME, column) FROM table
列是您的datetime列


也可以使用CONVERT(时间、列)在WHERE子句中。

我还有一个问题。这里我有两个场景。1)我有另一个问题。这里我有两个场景。1)我想查看2月份13.00到17.00之间的数据。2)我想查看2月份20:00到次日早上08:00的数据。对于第一个场景,它是合适的。我如何选择数据第二种情况?请回复