我有myTable
专栏RecTime AS DATETIME
RecTime
-----------------------
2013-05-22 15:32:37.530
2013-05-22 22:11:16.103
2013-05-22 16:24:06.883
2013-05-22 16:38:30.717
2013-05-22 23:54:41.777
2013-05-23 22:01:00.000
2013-05-23 09:59:59.997
我需要一条 SQL 语句,告诉我哪些日期包含 12:00 到 22:00 之间的时间
预期结果是:-
RecTime | foo
------------------------|-----
2013-05-22 15:32:37.530 | 1
2013-05-22 22:11:16.103 | 0
2013-05-22 16:24:06.883 | 1
2013-05-22 16:38:30.717 | 1
2013-05-22 23:54:41.777 | 0
2013-05-23 22:01:00.000 | 0
2013-05-23 09:59:59.997 | 0
现在我使用以下内容: -
SELECT
[RecTime]
, CASE WHEN [RecTime] >= CONVERT(DATETIME, CONVERT(VARCHAR(4), DATEPART(YEAR, [RecTime])) + '-' + CONVERT(VARCHAR(2), DATEPART(MONTH, [RecTime])) + '-' + CONVERT(VARCHAR(2), DATEPART(DAY, [RecTime])) + ' 12:00')
AND [RecTime] <= CONVERT(DATETIME, CONVERT(VARCHAR(4), DATEPART(YEAR, [RecTime])) + '-' + CONVERT(VARCHAR(2), DATEPART(MONTH, [RecTime])) + '-' + CONVERT(VARCHAR(2), DATEPART(DAY, [RecTime])) + ' 22:00')
THEN 1
ELSE 0
END
FROM dbo.myTable
我知道这不是最好的解决方案/性能。
帮助将不胜感激