• ベストアンサー

勤続年数の求め方

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

  • pon_s
  • お礼率88% (101/114)

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

  • ベストアンサー
noname#140971
noname#140971
回答No.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 なお、このストアドプロシージャに関して補足質問されても何も判りません。

pon_s
質問者

お礼

回答ありがとうございます。 実はここに質問を投稿した後、自分なりにあれこれ試したいたら、何とかできました。 質問を削除したかったのですが、投稿後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)

  • お世話になります。

    お世話になります。 先日、間違えて 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 & "ヶ月" で良いのか?と思いますが、 "契約入社年月日" "社員採用年月日" "退職日" と有ります。 "契約入社年月日"のみで、その他に日付が記載されていない場合は "契約入社年月日"~"本日"迄の年数。 "契約入社年月日" "社員採用年月日" の両方に日付が記載されている場合は "契約入社年月日"~"社員採用年月日" 迄の勤続年数と "社員採用年月日"~"本日"迄の勤続年数。 "契約入社年月日" "社員採用年月日" の各々の列の隣に勤続年数の列を追加 しますので、 "契約入社年月日"の場合は、"社員採用年月日"が空白の場合、"本日"までの勤続年数。 "社員採用年月日"の場合は、"社員採用年月日"が空白の場合、空白で。 "社員採用年月日"に日付の記載が有る場合、"本日"までの勤続年数。 で、計算させたいんですが、ご教授お願い致します。

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

    エクセルを使って勤続年数を計算しようと思っています。 入社年月日を入力し、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です。

  • ACCESS97で現在の日付から勤続年月数を算出する関数

    ACCESS97で社員名簿を作っています。 現在の日付から年齢を算出する関数は調べたところ次のようにすればよいとわかりました。 IIf(Right(Format([生年月日],"yyyy/mm/dd"),5)>Right(Format(Now(),"yyyy/mm/dd"),5),DateDiff("yyyy",[生年月日],Now())-1,DateDiff("yyyy",[生年月日],Now())) 次は現在日から入社年月日フィールドにあるデータを使い、勤続年数○年○ヶ月というクエリーを作りたいのですが、○ヶ月を算出する応用がわからずに困っております。 どうかよろしくお願いします。

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

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

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

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

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

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

  • 勤続年数

    昭和61年4月入社、平成18年4月1日現在の勤続年数は何年何ヶ月?