0

私は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

どの日付に 12:00 から 22:00 までの時間が含まれているかを示す SQL ステートメントが必要です

期待される結果は:-

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

これが最善のソリューション/パフォーマンスではないことはわかっています。

助けていただければ幸いです

4

3 に答える 3