質問: 勤続年数の求め方 access2003+sqlserver2005を使っています。 accessのクエリでは勤続年数(2007年3月20日現在の勤続年数)を求めるのに以下を使っていました。 勤続年数: datediff("m",[入社年月日],#2007/03/20#)\12 & "年" & datediff("m",[入社年月日],#2007/03/20#) mod 12 & "ヶ月" これを、ストアドプロシージャで行うにはどのように記述すればよいでしょうか? よろしくお願いします。
回答: ストアドプロシージなど見たことも使ったこともない一介のデザイナでプログラマではない門外漢ですが・・・。 まず、ストアドプロシージャ云々はさておいて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) + "年" などなどの修正が必要です。 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 なお、このストアドプロシージャに関して補足質問されても何も判りません。