3

日付と時刻に基づいてデータを選択する必要があります。2 つの基準があります。これを実装する方法。

1) 2013 年 1 月 1 日から 2013 年 1 月 10 日までのデータを 10 ~ 16 の時間範囲で選択する

2) 2013 年 1 月 1 日から 2013 年 1 月 10 日までのデータを、翌朝 20 時から 8 時までの時間範囲で選択します。

コードを実装しました。最初の基準でのみ機能します。そのコードは次のとおりです。

 where date>='1-1-2013' AND date <'1-10-2013' 
     AND CAST(date AS TIME) between '10:00' and '16:00'

ここで、テーブルの日付フィールドは日時タイプです。これを解決するのを手伝ってください

4

3 に答える 3

1

これを試して:

DECLARE @tmp TABLE ( date DATETIME )

INSERT  INTO @tmp
        ( date )
VALUES  ( '2013-01-01 10:09:29'  -- date - datetime
          )
INSERT  INTO @tmp
        ( date )
VALUES  ( '2013-01-01 15:09:29'  -- date - datetime
          )
INSERT  INTO @tmp
        ( date )
VALUES  ( '2013-01-01 17:09:29'  -- date - datetime
          )
INSERT  INTO @tmp
        ( date )
VALUES  ( '2013-01-01 07:09:29'  -- date - datetime
          )
SELECT  date
FROM    @tmp AS t
WHERE   CONVERT(DATE,date) >= CONVERT(DATE, '01-01-2013', 105)
        AND CONVERT(DATE,date) <= CONVERT(DATE, '01-01-2013', 105)
        AND CONVERT(TIME, date) BETWEEN CONVERT(TIME, '10:00')
                                AND     CONVERT(TIME, '16:00')
于 2013-09-09T06:55:49.587 に答える
1

1)

WHERE Date Between '2013-01-01 10:00' AND '2013-10-01 16:00'

2)

WHERE Date Between '2013-01-01 20:00' AND '2013-10-01 08:00'
于 2013-09-09T06:50:45.643 に答える
1

私は正しく理解しましたか?わからない..

これを試して

where date>='1-1-2013' AND date <'1-10-2013' 
     AND ((CAST(date AS TIME) between '10:00' and '16:00')
      OR (CAST(date AS TIME) between '20:00' and '23:59')
      OR (CAST(date AS TIME) between '00:00' and '08:00'))
于 2013-09-09T08:21:41.287 に答える