- - PR -
西暦の年月から過去半年を取得するには
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-08-05 18:37
こんばんは。
SQLServer2005のクエリーについて教えてください。 西暦の年月から過去半年を取得したいのですが 今は年月に仮に日付を付け、DATETIME型に変換し、DATEADDで-6し また年月に戻す方法をとっています。 もっと簡単な方法はありませんか? DECLARE @YM AS int SET @YM = 200808 SELECT SUBSTRING(CAST(CONVERT(INT,CONVERT(char, DATEADD(M,-6,CAST(CAST(@YM*100+01 AS char) AS datetime)),112)) AS char),1,6) という具合です。 すいません、よろしくお願いします。 | ||||
|
投稿日時: 2008-08-05 21:12
> case when (@YM % 100) > 6 then @YM - 6 else @YM - 94 end
上記 -94 は -100 + 12 - 6 から計算しました。 1年を12ヶ月に変換してから6ヶ月前にしてます。 | ||||
|
投稿日時: 2008-08-06 09:42
ありがとうございます。
確かにシンプルですね。 @YM に % 100する説明どこに載っていますか? | ||||
|
投稿日時: 2008-08-06 11:07
横槍ですが、 多分、年月の月の部分を取得してるんじゃないですか? | ||||
|
投稿日時: 2008-08-06 13:13
確かに、きちんと月の部分が取得できるのですが
MSDNなどの、どこに説明があったのかと思いまして.. いろいる検索してみるのですが | ||||
|
投稿日時: 2008-08-06 13:43
なびさん物忘れ激しすぎ。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?mode=viewtopic&topic=44026&forum=7&start=8 | ||||
|
投稿日時: 2008-08-06 16:50
%が剰余を求めているという事が、不明だったんですか?
アドバイスを無視して公式なMSの見解を求めているんですか? | ||||
|
投稿日時: 2008-08-06 16:56
MSDN等には載ってないでしょう。(もしかしたらどこかのサンプルには有るかもしれませんが)
これは数学的考えの話です。 200808を100で除算して商と余りを求めた場合 商:2008 余:8 となりますよね。 つまり、6桁の数字の下2桁を取りたいならば100で割った余りを求めれば良いってだけです。 [数値間違えていたので修正] [ メッセージ編集済み 編集者: くまっち 編集日時 2008-08-06 17:11 ] |