電子書籍の厳選無料作品が豊富!

Access2003+SQLServer2005を使っています。
Accessのクエリでは勤続年数(2007年3月20日現在の勤続年数)を求めるのに以下を使っていました。
勤続年数: DateDiff("m",[入社年月日],#2007/03/20#)\12 & "年" & DateDiff("m",[入社年月日],#2007/03/20#) Mod 12 & "ヶ月"
これを、ストアドプロシージャで行うにはどのように記述すればよいでしょうか?
よろしくお願いします。

A 回答 (1件)

ストアドプロシージなど見たことも使ったこともない一介のデザイナでプログラマではない門外漢ですが・・・。



まず、ストアドプロシージャ云々はさておいてSQL文を完成させることが先決かと思います。
そうすれば、後はトントンかと。

例えば、

"AAAA" & "BBBB" ---------> "AAAA" + "BBBB"
"#2007/03/20#" -----------> "2007/03/20"
MOD ---------------------> %
DateDiff("m", XXXX, YYYY) ---> DateDiff(month, XXXX, YYYY)
1 & "年" ------------------> convert(varchar(2), 1) + "年"

などなどの修正が必要です。

<Table1>
ID____入社年月日
1_____2004/01/01

SQL Server 2000 上にこのようなテーブルを作成し、Access2002のイミディエイトウインドウで修正を反映したSQL文を実行。

[イミディエイト]
? DLookup("Convert(varchar(2),DateDiff(month,[入社年月日],'2007/03/20') / 12) + '年' + convert(varchar(2),DateDiff(month,[入社年月日],'2007/03/20') % 12) + 'ヶ月'","Table1")
3年2ヶ月

こういう結果を得ました。

なお、一応、ストアドプロシージャも作成してみました。
実行結果は、次のようです。

勤続年数
3年2ヶ月

CREATE PROCEDURE dbo.[ストアドプロシージャ1]
AS SELEC CONVERT(varchar(2), DATEDIFF(month, 入社年月日, CONVERT(DATETIME, '2007-03-20 00:00:00', 102)) / 12) + '年' +
        CONVERT(varchar(2), DATEDIFF(month, 入社年月日, CONVERT(DATETIME, '2007-03-20 00:00:00', 102)) % 12) + 'ヶ月'
        AS 勤続年数
FROM dbo.Table1
GO

なお、このストアドプロシージャに関して補足質問されても何も判りません。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
実はここに質問を投稿した後、自分なりにあれこれ試したいたら、何とかできました。
質問を削除したかったのですが、投稿後24時間は削除できないようですのでそのままにしておきました。
それはさておき、詳しくお教えいただき感謝申しあげます。
ぜひ参考にさせていただきます。

お礼日時:2007/08/21 10:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す