• 締切済み

SQLクエリの記述について

使用しているSQLサーバはSQL Server 2008になります。 5/23に1回目プログラムを実行したとき、下記の例に記載した実行日時が2015-05-23 01:59:08から2015-05-23 02:02:05のレコードが作成され、 5/23に2回目プログラムを実行したときに下記の例に記載した実行日時が2015-05-23 10:59:15から2015-05-23 11:03:09のレコードが作成されます。 クエリで取り出したいレコードは2回目のプログラムを実行したときのレコードつまり、最後にプログラムを実行したときのレコードを取り出したいと考えています。 取り出したいレコードの件数は4件になり、それを行うには恐らく、@@ROWCOUNTの使用が必要と考えています。 列名「実行日時」の型はdatetime型になります。 この場合、どのようなクエリを作成すれば、実現できるかご教示頂けますでしょうか。 ------------------------------------ 親番号 子番号 実行日時 1 1 2015-05-23 10:59:15 1 2 2015-05-23 11:01:10 2 1 2015-05-23 11:02:17 2 2 2015-05-23 11:03:09 1 1 2015-05-23 01:59:08 1 2 2015-05-23 02:00:01 2 1 2015-05-23 02:01:02 2 2 2015-05-23 02:02:05 ------------------------------------

みんなの回答

  • IDii24
  • ベストアンサー率24% (1597/6506)
回答No.2

>datetime型の場合の条件の書き方がわからず、困っております。 SELECT TOP (4) * FROM XXX WHERE (実行日時 >= CONVERT(DATETIME, 2015/5/22 10:59:01', 102)) ORDER BY 実行日時 DESC 単純にそれ以上で取ればよいと思います。

  • IDii24
  • ベストアンサー率24% (1597/6506)
回答No.1

やりたいこととこのシステムがよくわかりませんが、通常は処理のJOB番号を記録するものですがそれはないのですね。で、必ず4レコードのログなのですか。であれば日付を降順のソートして4件だけ抜き出せばよいのでは? つまり SELECT TOP 4 * FORM テーブル ORDER BY 実行日時 ASC ですよね。

noname#242248
質問者

補足

ありがとうございます。 レコードの列に「ジョブ番号」があって、ジョブを実行するたび、ジョブ番号が書き込まれていれば、 それで抽出も考えていましたが、残念ながらありませんでした。 実際は、1回実行するたび、1066レコード作られ、降順に並べ替えする必要があるので下記で試してみます。 -------------------------------------------------------- SELECT TOP 1066 * FORM テーブル ORDER BY 実行日時 DESC -------------------------------------------------------- もう1点教えて頂きたい点があるのですが、下記のレコードの中から、2015/5/22 10:59:01から2015/5/22 11:02:05の4レコードを取り出す場合はどうしたらよいでしょうか。 where句を使用すると思うのですが、datetime型の場合の条件の書き方がわからず、困っております。 ------------------------------------ 親番号 子番号 実行日時 1 1 2015-05-23 10:59:15 1 2 2015-05-23 11:01:10 2 1 2015-05-23 11:02:17 2 2 2015-05-23 11:03:09 1 1 2015-05-23 01:59:08 1 2 2015-05-23 02:00:01 2 1 2015-05-23 02:01:02 2 2 2015-05-23 02:02:05 1 1 2015-05-22 11:02:05 1 2 2015-05-22 11:01:03 2 1 2015-05-22 11:00:04 2 2 2015-05-22 10:59:01 1 1 2015-05-22 02:59:01 1 2 2015-05-22 02:58:03 2 1 2015-05-22 02:57:01 2 2 2015-05-22 02:55:02 ------------------------------------