- ベストアンサー
勤続年数の求め方
Access2003+SQLServer2005を使っています。 Accessのクエリでは勤続年数(2007年3月20日現在の勤続年数)を求めるのに以下を使っていました。 勤続年数: DateDiff("m",[入社年月日],#2007/03/20#)\12 & "年" & DateDiff("m",[入社年月日],#2007/03/20#) Mod 12 & "ヶ月" これを、ストアドプロシージャで行うにはどのように記述すればよいでしょうか? よろしくお願いします。
- みんなの回答 (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 なお、このストアドプロシージャに関して補足質問されても何も判りません。
お礼
回答ありがとうございます。 実はここに質問を投稿した後、自分なりにあれこれ試したいたら、何とかできました。 質問を削除したかったのですが、投稿後24時間は削除できないようですのでそのままにしておきました。 それはさておき、詳しくお教えいただき感謝申しあげます。 ぜひ参考にさせていただきます。