• ベストアンサー
  • 困ってます

勤続年数の求め方

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

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数2753
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.1
noname#140971
noname#140971

ストアドプロシージなど見たことも使ったこともない一介のデザイナでプログラマではない門外漢ですが・・・。 まず、ストアドプロシージャ云々はさておいて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時間は削除できないようですのでそのままにしておきました。 それはさておき、詳しくお教えいただき感謝申しあげます。 ぜひ参考にさせていただきます。

関連するQ&A

  • accessでの勤続年数の計算

    ACCESS初心者です。 現在従業員名簿を作成しています。 勤続年数欄に過去の質問を参考に以下の関数を入力しました。 IIf(Day(Date())>=Day([入社年月日]),DateDiff('m',[入社年月日],Date())\12 & '年' & DateDiff('m',[入社年月日],Date()) Mod 12 & 'ヶ月',(DateDiff('m',[入社年月日],Date())-1)\12 & '年' & (DateDiff('m',[入社年月日],Date())-1) Mod 12 & 'ヶ月') 在籍中の方の勤続年数はこれで問題ないのですが、退職日欄に退職日付を入力した時に、退職日までの期間が表示されるようにしたいのですがどうしたらよいでしょうか? よろしくお願い致します。

  • 勤続年数を算出する関数の違いを教えてください。

    度々ご質問させていただきすみません。 勤続年数を出力したいという旨の質問を参考にしてみると (1)DateDiff('m',[入社年月],Date()) \12 & '年' & DateDiff('m',[入社年月],Date()) Mod 12 & 'ヶ月' というものと、 (2)DateDiff('m',[入社年月],Date()) -1 \12 & '年' & DateDiff('m',[入社年月],Date()) -1) Mod 12 & 'ヶ月' がありますが、この2つの違いは何でしょうか? 本当にAccess初心者で申し訳なく、お恥ずかしい限りなのですが、ご回答の程よろしくお願い申し上げます。 また、先に質問した件につきましても、併せてご教授の程お願い致します。(質問:8338385)

  • エクセルで勤続年数を計算

    エクセルを使って勤続年数を計算しようと思っています。 入社年月日を入力し、TODAYで今日までの勤続年数を計算しようと思ったのですが、うまくいきません。 どのように入力をして、どのような式にしたらよいでしょうか。 勤続年数は、できれば年と月まででればいいなと思っています。日にちまではいりません。 どなたかわかる方教えてください。      1      2      3   A 入社年月日        勤続年数 B H15.8.1   TODAY   ●年●月

  • 平均勤続年数

    平均の勤続年数の出し方を教えて下さい。 基準日→ 2020年3月31日 (1) 2014年6月16日入社 (2) 2019年5月23日入社 この2名分の勤続年数をエクセルで〇年〇ヵ月で出すにはどのようにすれば宜しいでしょうか? A1に基準日を入れています。 入社年月日はA2からA3です。

  • エクセルで、簡単に勤続年数を表示させたい

    エクセルで、「入社年月日」を入力すると、自動的に勤続年数が表示される計算式を探しています。 例:入社年月日 【2000.01.01】   勤続年数 【6】 上記のような表示方法です。 そうすると、何日現在を決めなければいけなくなると思いますが、 その年の1月1日現在でも、今日現在でも、どちらが適当なのか分かりませんが、 実際にお仕事で使っている方、教えて下さい。 宜しくお願い致します。

  • 勤続年数の平均値の求め方

    こんにちは、エクセルについて教えてください。 ある会社での各社員の勤続年数の計算でA列に入社年月日、B列に本日の年月日があり、C列にAとBの期間(勤続年数)計算を =DATEDIF(A30,B30,"Y")&"年" & DATEDIF(A30,B30,"YM") & "月"で ●年●月で表示させています。 さて、この各社員の勤続年数の平均を出すために通常のAvarage関数を使うと「ゼロで割りました」のメッセージが出て計算してくれません。勤務年数の平均を求める方法を教えてください。

  • お世話になります。

    お世話になります。 先日、間違えて AccessVBA質問箱に投稿してしまいましたが、 あらためて宜しくお願い致します。 【質問】 クエリで勤続年数を計算させたいんですが、困っています。 通常だと、"入社年月日"から"本日"または"退職日"で、 勤続: Int((IIf(DatePart("d",[入社年月日])>DatePart("d",Date()),DateDiff("m",[入社年月日],Date())-1,DateDiff("m",[入社年月日],Date()))/12)) & "年" & IIf(DatePart("d",[入社年月日])>DatePart("d",Date()) And DateDiff("m",[入社年月日],Date())=0,DateDiff("m",[入社年月日],Date())-1,DateDiff("m",[入社年月日],Date())) Mod 12 & "ヶ月" で良いのか?と思いますが、 "契約入社年月日" "社員採用年月日" "退職日" と有ります。 "契約入社年月日"のみで、その他に日付が記載されていない場合は "契約入社年月日"~"本日"迄の年数。 "契約入社年月日" "社員採用年月日" の両方に日付が記載されている場合は "契約入社年月日"~"社員採用年月日" 迄の勤続年数と "社員採用年月日"~"本日"迄の勤続年数。 "契約入社年月日" "社員採用年月日" の各々の列の隣に勤続年数の列を追加 しますので、 "契約入社年月日"の場合は、"社員採用年月日"が空白の場合、"本日"までの勤続年数。 "社員採用年月日"の場合は、"社員採用年月日"が空白の場合、空白で。 "社員採用年月日"に日付の記載が有る場合、"本日"までの勤続年数。 で、計算させたいんですが、ご教授お願い致します。

  • 勤続年数の平均を出したい

    エクセル2000で社員名簿を作っています。 平均勤続年数を出したいのですが、=AVERAGE(勤続年数の入ったセル一覧)としても答えが出ず、#DIV/0!となります。 ちなみに勤続年数は   =DATEDIF(E4,$F$2,"Y")&"年"&DATEDIF(E4,$F$2,"YM")&"ヶ月"     ※F2セルに今日の日付、E列に入社年月日が入っています という関数で出しており、セルの書式は「標準」です。 平均年齢は同じ方法で出せるので、不思議です。。。 よろしくお願いします。

  • 平均勤続年数の出し方について

    調べたのですが、平均勤続年数がどうしてもエラーになってしまうので、教えてください、お願い致します。 K(入社年月日)  L (基準日) K2 (2010/4/1)  L2 (2013/3/31) K3 (2011/1/1) ・ ・ ・ K69 (2013/3/25) この場合の、基準日時点の平均勤続年数の関数は =DATEDIF(AVERAGE(K2:K69),L2,"Y")&"年"&DATEDIF(AVERAGE(K2:K69),L2,"YM")&"ヶ月 と入力してもエラーになってしまいます。 分かる方どうか教えてください!

  • Excelで入社・退社年月日を入力して、勤続年数表示したい

    Excelで入社年月日と退社年月日を入力すると、 勤続年数が表示できるようにしたいのですが、 方法が分かりません。 DateDifという関数があると過去の質問を検索してみたらでてきましたが、どのように使ったらよいのかが分かりません。 入社年月日⇒14年4月1日 退社年月日⇒16年4月20日 勤続年数⇒2年1ヶ月 という具合に、一ヶ月未満の日数がある場合は1ヶ月に繰上げて表示したいです。 そして、休業期間がある場合は同様に休業期間を表示して、勤続年数からマイナスして結果的に 勤続年数-休業期間=在職期間 と表示できるようにしたいです。 ご存知のかた教えてください!よろしくお願いいたします。