- PR -

西暦の年月から過去半年を取得するには

投稿者投稿内容
なび
ぬし
会議室デビュー日: 2007/08/27
投稿数: 273
投稿日時: 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)

という具合です。

すいません、よろしくお願いします。
こあら
大ベテラン
会議室デビュー日: 2007/06/26
投稿数: 157
投稿日時: 2008-08-05 21:12
> case when (@YM % 100) > 6 then @YM - 6 else @YM - 94 end

上記 -94 は -100 + 12 - 6 から計算しました。
1年を12ヶ月に変換してから6ヶ月前にしてます。
なび
ぬし
会議室デビュー日: 2007/08/27
投稿数: 273
投稿日時: 2008-08-06 09:42
ありがとうございます。

確かにシンプルですね。

@YM に % 100する説明どこに載っていますか?
お だ
会議室デビュー日: 2008/04/02
投稿数: 14
投稿日時: 2008-08-06 11:07
引用:

@YM に % 100する説明どこに載っていますか?


横槍ですが、
多分、年月の月の部分を取得してるんじゃないですか?
なび
ぬし
会議室デビュー日: 2007/08/27
投稿数: 273
投稿日時: 2008-08-06 13:13
確かに、きちんと月の部分が取得できるのですが

MSDNなどの、どこに説明があったのかと思いまして..

いろいる検索してみるのですが
こあら
大ベテラン
会議室デビュー日: 2007/06/26
投稿数: 157
投稿日時: 2008-08-06 13:43
なびさん物忘れ激しすぎ。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?mode=viewtopic&topic=44026&forum=7&start=8
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2008-08-06 16:50
%が剰余を求めているという事が、不明だったんですか?
アドバイスを無視して公式なMSの見解を求めているんですか?
くまっち
大ベテラン
会議室デビュー日: 2008/01/18
投稿数: 169
お住まい・勤務地: 茨城県のどこか。
投稿日時: 2008-08-06 16:56
MSDN等には載ってないでしょう。(もしかしたらどこかのサンプルには有るかもしれませんが)

これは数学的考えの話です。

200808を100で除算して商と余りを求めた場合
商:2008
余:8
となりますよね。

つまり、6桁の数字の下2桁を取りたいならば100で割った余りを求めれば良いってだけです。

[数値間違えていたので修正]

[ メッセージ編集済み 編集者: くまっち 編集日時 2008-08-06 17:11 ]

スキルアップ/キャリアアップ(JOB@IT)