AccessVBAでクエリを作成しておりまして。
●DateDiff関数 …2つの日時の間隔を求める - Officeのチカラ
https://officek.net/access/a-function/al-date/datediff/
にありますように、DateDiff関数を使って年齢を出すSQLを書いてみました。
------------------------
SELECT T_顧客マスター.顧客名, T_顧客マスター.[フリガナ], T_顧客マスター.性別, T_顧客マスター.生年月日, DateDiff("yyyy",[生年月日],year(2019/06/06)) AS 年齢
FROM T_顧客マスター;
------------------------
するとこちら https://f.hatena.ne.jp/moon-fondu/20190928161008 にありますように、年齢がマイナスになって出てきてしまったのです。
Access VBA 入門講座 日付・時刻関数
http://accessvba.pc-users.net/function/date.html
を閲覧するに、年を入れるyearに、日付(2019/06/06)を入れておけば。
2019年が返り、生年月日のyearとの間隔で年齢を出してくれると思ったのですが。
------------------------
SELECT T_顧客マスター.顧客名, T_顧客マスター.[フリガナ], T_顧客マスター.性別, T_顧客マスター.生年月日, DateDiff("yyyy",[生年月日],date()) AS 年齢
FROM T_顧客マスター;
------------------------
と、終了日時の引数に「date()」と記載すると、正常な年齢結果 https://f.hatena.ne.jp/moon-fondu/20190928161013 が出てきたのですが。
なぜyearを用いたら年齢がマイナスになってしまったのか、その原因をお教えいただけますと幸いです。
よろしくお願いします<m(__)m>
Year(#2019/06/06#) みたいに、日付が固定値なら#シャープで囲うと正しく認識されるのでは?
日付の指定、Year関数に渡す時は
Year(#2019/06/06#)
と
#で囲うと思います
vba 日付 # で検索すると
google:vba 日付 #
【VBA入門】日付を扱う方法(取得、書式変換、比較、計算、チェック)
https://www.sejuku.net/blog/36936
などが見つかるので、↑一読してみてください。
解決のヒントとなれば幸いです。
Year(#2019/06/06#) みたいに、日付が固定値なら#シャープで囲うと正しく認識されるのでは?
日付の指定、Year関数に渡す時は
Year(#2019/06/06#)
と
#で囲うと思います
vba 日付 # で検索すると
google:vba 日付 #
【VBA入門】日付を扱う方法(取得、書式変換、比較、計算、チェック)
https://www.sejuku.net/blog/36936
などが見つかるので、↑一読してみてください。
解決のヒントとなれば幸いです。
DateDiff("yyyy",[生年月日],date())
で動くなら、Year(#2019/06/06#)の戻り値、2019の値では
DateDiff("yyyy",[生年月日],2019)
では動かなくて、日付型を渡さないといけないので、
普通に
SELECT T_顧客マスター.顧客名, T_顧客マスター.[フリガナ], T_顧客マスター.性別,
T_顧客マスター.生年月日, DateDiff("yyyy",[生年月日], #2019/06/06#) AS 年齢
FROM T_顧客マスター;
-------
と
DateDiff("yyyy",[生年月日], #2019/06/06#)
で試してみてください
間違っていたらスミマセン
すごいです、うまくいきました!
日付型の「#2019/06/06#」だとうまくいくんですね。
単位(カウントの基準)がyyyy(年)なので、開始日時の日付け([生年月日]カラム)同様、終了日時も形式を揃えないとうまくカウントしてくれないんですね。
勉強になりました。
ありがとうございました。
DateDiff("yyyy",[生年月日],date())
2019/09/30 03:12:44で動くなら、Year(#2019/06/06#)の戻り値、2019の値では
DateDiff("yyyy",[生年月日],2019)
では動かなくて、日付型を渡さないといけないので、
普通に
SELECT T_顧客マスター.顧客名, T_顧客マスター.[フリガナ], T_顧客マスター.性別,
T_顧客マスター.生年月日, DateDiff("yyyy",[生年月日], #2019/06/06#) AS 年齢
FROM T_顧客マスター;
-------
と
DateDiff("yyyy",[生年月日], #2019/06/06#)
で試してみてください
間違っていたらスミマセン
すごいです、うまくいきました!
2019/09/30 18:23:22日付型の「#2019/06/06#」だとうまくいくんですね。
単位(カウントの基準)がyyyy(年)なので、開始日時の日付け([生年月日]カラム)同様、終了日時も形式を揃えないとうまくカウントしてくれないんですね。
勉強になりました。
ありがとうございました。