ACCESS97で社員名簿を作っています。
現在の日付から年齢を算出する関数は調べたところ次のようにすればよいとわかりました。
IIf(Right(Format([生年月日],"yyyy/mm/dd"),5)>Right(Format(Now(),"yyyy/mm/dd"),5),DateDiff("yyyy",[生年月日],Now())-1,DateDiff("yyyy",[生年月日],Now()))
次は現在日から入社年月日フィールドにあるデータを使い、勤続年数○年○ヶ月というクエリーを作りたいのですが、○ヶ月を算出する応用がわからずに困っております。
どうかよろしくお願いします。
No.3ベストアンサー
- 回答日時:
これは、DateDiff関数が、月単位で日付を数えている事に起因する問題ですね。
DateDiff('m',#2001/01/31#,#2001/02/01#)
のようにすると、1が表示されます。
日付的には1日しか違わないのに、月だけに着目するとひと月異なっていると判断されるんですね。
ってことで、「どの時点でひと月と判断するのか」を決めておく必要が出てきます。
1月29日(月末より前)に入社した人を2月28日(月末)には勤続一ヶ月と判断するべきか、とか、細かい事を考え出すときりがないので、とりあえずこんな感じで決めてみます。
入社年月日の日の部分とと、現在の年月日の日の部分とを比較してみて、現在の日のほうが大きかったら、既にひと月経過したとみなす。
これを#2の式と組み合わせると、以下のようになります。
IIf(Day(Date())>=Day([入社年月日]),DateDiff('m',[入社年月日],Date())\12 & '年' & DateDiff('m',[入社年月日],Date()) Mod 12 & 'ヶ月',(DateDiff('m',[入社年月日],Date())-1)\12 & '年' & (DateDiff('m',[入社年月日],Date())-1) Mod 12 & 'ヶ月')
なんか、すごい長い式になっちゃいましたが、これで上記のような仕様を満たしているはずです。
ありがとうございます!
これぞ求めた結果でした!
Accessはよく使うのですが関数は一般的なことしか知らず、自分で応用をきかせようにも発想することもできずにいましたので本当に助かりました。何回も補足になってすみませんでした。
No.2
- 回答日時:
うーん… それなら、
DateDiff('m',[入社年月日],Date()) \ 12 & '年' & DateDiff('m',[入社年月日],Date()) Mod 12 & 'か月'
のようにしても駄目でしょうか?
これでも駄目なら、
DateDiff('m',[入社年月日],Date())
とだけ、クエリのフィールドの部分に入力してみて、それらしき数字が出るかどうか確認してみてください。(3年2ヶ月なら、38(36+2ヶ月)と表示されるはず。)
もしうまくいかなければ、補足してください!
この回答への補足
回答ありがとうございます。
うまくいきました!上の方法でうまくいったんですけど、勤続2週間の社員が勤続0年1ヶ月のように月未満の分も繰り上げられてしまうのですがよい方法はありませんか?
たびたびすみませんがご存知でしたらお願いします。
No.1
- 回答日時:
日付の差異を求める関数は、DateDiffです。
datediff("yyyy",[入社年月日],date) & "年" & datediff("m",[入社年月日],date) mod 12 & "ヶ月"
ってな感じで記述すればいいでしょう。
mod 演算子は、割り算の余りを計算します。
この回答への補足
回答ありがとうございます。
教えていただいたとおりやってみたのですがうまく結果が出ません。
入社年月日フィールドのデータは西暦でyy/mm/ddで入力してあるのですが、データのない社員の分は「年ヶ月」という文字だけが返り、データを入力してある社員の分は「#Error」が返ります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) エクセルのVBAについて教えてください。 4 2023/01/21 10:21
- Excel(エクセル) 【vba】日付の形式が勝手に変わってしまう。 1 2022/09/29 10:54
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/01/23 09:24
- Visual Basic(VBA) 日付の計算方法 2 2022/07/01 23:35
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/01/23 11:02
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/05/23 16:28
- Visual Basic(VBA) 標準モジュール Public mOnTime As Date Sub sample() '実行プロシ 1 2023/02/22 15:44
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/01/23 17:13
- Excel(エクセル) Excel 数行を1組とする300組ほどあるデータの項目を揃えたいです。 3 2023/01/26 19:38
- Access(アクセス) Accessのデータ型の日付/時刻型について 1 2023/04/02 17:03
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
Accessで勤続年数(○年○ヶ月)を表示する方法
その他(データベース)
-
accessでの勤続年数の計算
PowerPoint(パワーポイント)
-
アクセスで「本日日付」と「入社日付」から勤続年数をだせるようにしたいのです。。
Access(アクセス)
-
-
4
アクセス2000で勤続年数の自動計算方法は?
Access(アクセス)
-
5
ACCESS 「パラメータの入力」を消したい!!
Access(アクセス)
-
6
【Access】フォームで自動計算した年齢をテーブルに表示
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
所属部署が分かりません・・・
-
就活の時ですが自分に親の影響...
-
社会人何年目とかの数え方って...
-
財団法人に入ると。
-
◆働く皆さん◆ 産休、入社何年...
-
履歴書 職暦について 教育委...
-
SQL Plusで項目名が最後まで表...
-
妻の職場への転職について
-
コネ入社を鎌倉支店へ追い出し...
-
後から入社して来る後輩が自分...
-
恥ずかしながら勤続年数がはや...
-
JA単協を受けている大学生です...
-
契約社員(業務請負)の場合の...
-
コネ入社経験者様、コネ入社の...
-
こんばんは。 転職活動中です。...
-
三菱商事等の総合商社の社員は...
-
入社したばかりの派遣の休み
-
コネ入社は社員側と会社側、ど...
-
17歳高校生です。 トヨタの期間...
-
派遣会社の入社書類を郵送する...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
社会人何年目とかの数え方って...
-
所属部署が分かりません・・・
-
恥ずかしながら勤続年数がはや...
-
SQL Plusで項目名が最後まで表...
-
転職の入社日当日に体調不良で...
-
◆働く皆さん◆ 産休、入社何年...
-
財団法人に入ると。
-
コネ入社経験者様、コネ入社の...
-
就活の時ですが自分に親の影響...
-
17歳高校生です。 トヨタの期間...
-
精神を強くする方法はあります...
-
部長という役職はやっぱりすご...
-
入社後 身上書を書かされるのは...
-
JA単協を受けている大学生です...
-
妻の職場への転職について
-
履歴書 職暦について 教育委...
-
こんばんは。 転職活動中です。...
-
保険業界 就職 ブラックリスト
-
コネ入社ってわかりますか?
-
新入社員で私用で休みたい
おすすめ情報