- - PR -
SqlServerで期間内の日付を取得するには?
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-06-17 16:39
SqlServer2005を使用しています。
SQLにて対象日付期間に存在する日付を取得したいのですが 方法が分かりません。 例) 2008/5/1〜2008/5/5の期間内であれば検索結果として 2008/5/1 2008/5/2 2008/5/3 2008/5/4 2008/5/5 と5レコード取得したい。 また、対象年月を指定した場合に同様の処理 (その月に日付は何が存在するかを取得したい) を行いたいと思っています。 皆様のお知恵を拝借できませんでしょうか? | ||||||||
|
投稿日時: 2008-06-17 16:58
where節に条件を書けばいいです。
betweenでもandでも、お好きな方をどうぞ。 | ||||||||
|
投稿日時: 2008-06-17 17:01
何に困っているのか分かりかねますが・・・
SQLServer の Convert 関数 を調べると役に立つかも。 | ||||||||
|
投稿日時: 2008-06-17 17:02
Books Online でいうとここらへんです。
・BETWEEN ・比較演算子 _________________ 上本亮介 (ue) @ わんくま同盟 Microsoft MVP for VSTO (Jul 2008 - Jun 2009) Hello Another World! .NET 勉強会 / ヒーロー島 | ||||||||
|
投稿日時: 2008-06-17 17:02
Edossonさん ありがとうございます。
少しこちらから提示する内容に不備があって正しくやりたいことが 伝わっていなかったと思います。 テーブルから内容を取得するのであれば簡単にできる (ご指摘の内容)のです。 やりたいことはテーブルは関係なくSQLにて 日付の計算を行いたいということなのです。 (例を出せばOracleのDual表的なものを使用する感じでしょうか?) 再度ご教授いただければと思います。 | ||||||||
|
投稿日時: 2008-06-17 17:14
何も無いところから結果は出せませんし、OracleのようなDUAL表もありませんから、自分で日付の行を作ってあげなくてはいけないでしょう。
以下の例のStored Procedureのように。 create proc p_aaa ( @fromDate datetime, @toDate datetime ) as declare @currentDate datetime declare @workDate table( [Date] [datetime] ); select @currentDate = @fromDate while ( @currentDate >= @fromDate and @currentDate <= @toDate ) begin insert into @workDate values ( @currentDate) select @currentDate = dateadd(day,1,@currentDate) end select * from @workDate /* end of procedure */ で、exec p_aaa '2008/5/1','2008/5/5' のように実行する。 | ||||||||
|
投稿日時: 2008-06-17 17:17
アプリ側ではなく、SQL のみで日付計算したいということですか? では、「対象日付期間」とか「対象年月」というのはどこから取得し、どうやって指定するのですか? ちなみに、SQLServer では SELECT CURRENT_TIMESTAMP なんてこと(FROM 句指定なし)が出来ます。 | ||||||||
|
投稿日時: 2008-06-17 17:24
皆様 早速のご回答ありがとうございます。
crab殿 Storedでやはり実現しないと無理でしょうか? (Storedでは実現できると判断しているのです) ひろれい殿 SELECT CURRENT_TIMESTAMP ではその日しか求めることができないと思っています。 出来ればWHERE句などを使用して日付の指定を行いたいと考えています。 PGでの使用用途については、 C#よりSQLを投げ、結果として返ってきた内容を Dataset内DataTableに 格納するというのが目標となります。 当然C#でソースを記述すれば実現可能なのはわかっていますが 出来る限りSQLで実現したいと思っています。 |