sql >> データベース >  >> RDS >> Sqlserver

SQL、日付/時刻の選択

    まず、Group を使用しないでください 列名として。これは、すべての SQL 標準の予約語です。名前を grp に変更しました

    '2012-06-01 08:00' から新しいシフトをスケジュールしようとしています '2012-06-03 08:00' に ...

    INSERT INTO tbl (prim, grp, startdate, enddate)
    SELECT 1, 10, '2012-06-01 08:00', '2012-06-03 08:00'
    WHERE  NOT EXISTS (
        SELECT *
        FROM   tbl
        WHERE  prim = 1
        AND    grp = 10
        AND   '2012-06-03 08:00' > startdate -- not >= to allow sharing a border
        AND   '2012-06-01 08:00' < enddate   -- and not BETWEEN ... AND either
        )
      

    比較することに注意してください:

    new_終わり > old_startnew_開始 < old_end

    BETWEEN .. AND .. を使用する場合 テストにシフトの境界を含めます。 >= を使用するのと同じです および <= . > を使用する必要があります および < 境界線が重なるようにします。

    さて、大幅に簡略化された構文を試してみてください。
    sqlfiddle で動作するデモがあります。 com




    1. SSISデータフローソースでSDEバージョンを設定するにはどうすればよいですか

    2. MySQLマスターからマスターへのレプリケーション

    3. HANDLER FOR NOT FOUNDはどのように機能し、その使用法は何ですか?

    4. update ステートメントの後に変更された値を表示する