FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

↑やる気アップにご協力をお願いします。わぁいヽ(∇⌒ヽ)(ノ⌒∇)ノわぁい♪

こんな記事もありますよ


日付に関しての操作を知りたい

今回のお悩みは・・・

以前、、「日付から年度を求めたい」で年度を求める時にDateAdd関数を利用したんですが、
他にはどんな関数があるのかを知りたい・・・

つまり・・・

日付に関しての色々な関数を知りたい

・・・ということですね。(@_@)/

色々とあるとは思いますが…自分の中で思いつくものを
いくつか列挙してみたいと思います。



まず、思いつくのは・・・

西暦を和暦に変換したい!

これではないでしょうか・・・?

この問題に関しては、Format関数を利用していきます。

例えば、「2010/9/30」を「平成22年9月30日」にしたい場合・・・
Format(#2010/9/30#, "ggge年m月d日")
こんな感じでしょうか
2010/9/30を日付と認識させるために##で囲んでいます。

では逆に、和暦を西暦に変えるには・・・
この場合も同様にFormat関数を利用していきますが・・・
Format("平成22年9月30日", "yyyy/m/d")
このような書き方になります。
平成22年9月30日も日付だから##で・・・とおもっていましたが、
文字列としてAccess側に渡して、西暦の形式に変換してくれるようです。

・・・初めてしった・・・(-。-) ボソッ

ちなみに和暦を「H22/9/30」とした場合も
Format("H22/9/30", "yyyy/m/d")
としなければならないようです。

・・・とここまで書いて思ったのですが、Format関数って
日付に関係する関数ではなかったですね・・・ ( ̄▽ ̄;)
早速なにか勘違いしている自分がいます・・・orz

・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

・・・では気をとりなおして・・・

年と月と日を別々に指定して日付を作成する関数
DateSerial関数にいきたいと思います。

よく、フォームなんかで年と月と日をコンボボックス等で
指定するものがありますが、その3つを合体して
日付を作成してくれる関数がDateSerial関数になります。

例えば、年が2010 月が9 日が30 としておきます。
この値を利用して日付を作成する場合、
DateSerial(2010,9,30)
とすると、2010/9/30という日付を作成してくれます。

DateSerial関数は
DateSerial(年の数値,月の数値,日の数値)
という引数で構成されています。

仮にコンボボックスの名前を cmb_年・cmb_月・cmb_日 として
いた場合には
DateSerial(Me.cmb_年,Me.cmb_月,Me.cmb_日)
とすればおっけりんぐなわけです。

・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

ではでは次に、DateAdd関数にいっちゃいましょ~。
この関数は以前に、「日付から年度を求めたい」で紹介していますが、
再度、ここで記述したいと思います。

DateAdd関数は、今日の日付の3ヶ月前とか、指定した日付の1年前…
といったように、年や月などの単位を指定して計算してくれる関数です。

例えば今日の日付から3ヶ月引いた日付を求めたい場合、
DateAdd("m", -3, Date)
とすると、今日の日付から月("m")単位で3引いた日付・・・
つまり、今日の日付が 「2010/9/30」 だとすると
求められる日付は、「2010/6/30」になってくれるっちゅ~わけです。

ちなみに、
DateAdd("m",-1,#2010/3/31#)
とした場合。(2010年3月31日から月単位で1引いた場合)
求められる値は、「2010/2/28」となってくれます。

DateAdd関数は
DateAdd("間隔",差,#元になる日付#)
という引数で成り立っています。
間隔についてですが、
年であれば "yyyy"
月であれば "m"
日であれば "d"
という風になっています。

他にもありますが、全部列挙していくのは面倒なので却下ヾ(  ̄▽)ゞオホホホホホ
詳しく知りたい方はAccessのHelpを見るなり、
もっとすばらしいサイトで調べられてください。ヾ(@^▽^@)ノわはは

・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

さて、今回最後の関数になります。
そりは・・・2つの日付の間隔を調べてくれる関数
DateDiff関数です。

2つの日付の差分を調べ、指定した単位(年や月など・・・)で
値を返してくれる関数です。

例えば入社日から今日までで勤務年数が何年か・・・
というような感じで利用が可能になるっちゅ~わけです。( ̄^ ̄) エッヘン!

上記の例を利用して、仮に入社日を1998年4月1日としましょう。

・・・え?その日に入社したのかですって?

いえ・・・違いますよ・・・っていうか・・・30 オーバーの年齢にして
いまだ ニート状態ですよ・・・

・・・え~・・・そうですよ・・・社会に不必要とされてますよ・・・
どうせ・・・おいらなんて・・・おいらなんて・・・

・・・ (;゜∇゜)は!
な・・・なにを、言わせるんですか・・・自分のことはどうでもいいじゃないですか・・・

・・・は・・・話を戻しましょうよ・・・(´Д`)グスン・・・

と・・・とりあえず、入社日を1998年4月1日としました。
そして今日の日付はDate関数を利用して求めるとします。
(このブログは2010/9/30に更新されています。)

この2つの日付で何年が経過したかを求める場合、
DateDiff("yyyy",#1998/4/1#,Date)
とすると、「12」という数値が求められます。
つまり、自分がもし入社できてたら、勤続12年という
ことになっていたんでしょうね・・・(-。-) ボソッ

\(・_\)ソノハナシハ (/_・)/コッチニオイトイテ

DateDiff関数は
DateDiff("間隔",日付1,日付2)
という引数で成り立っています。
間隔についてですが、これはDateAddで紹介したものと
同じになりますので、ここでは割愛。

ちなみに・・・上記の計算方法で勤続年数などを求めると
年の数値の差だけで計算されるので、誤差が出てくる場合もあります。

例えば、「2009/12/1」が入社日だとして、今日の日付が「2010/9/30」だとします。
上記の計算式
DateDiff("yyyy",#2009/12/1#,Date)
で勤続年数を求めると、まだ実際には1年が経過していないにも係らず
「1」年という答えが出てきてしまうわけです。

この誤差を少しでも小さくしたいと考えた場合、
間隔の単位を年("yyyy")ではなく、月("m")に変更してあげて
求められた数値を12で割ってあげると、誤差が少なくなります。

つまり
Int(DateDiff("m",#2009/4/1#,Date) / 12)
としてあげると、より正確な年数が求められるというわけです。
(誤差として最大31日間あるかもしれませんが・・・(^^ゞ)

・・・参考程度にどうぞ・・・(;^_^A

今回は非常に長くなってしまった気がします・・・
また今回の内容は、「日付から年度を求めたい」とかなり重複するところがあります。

また、今回紹介した関数に関する引数で省略しているところもありますが、
あくまで基本的な使い方ということで・・・深いツッコミはご遠慮くださいね (^^;

・・・ではとりあえず、今日のお悩みもこれで解決!・・・としておきましょう。

ではでは・・・あでゅ~(・・)/ シュタ
↑やる気アップにご協力をお願いします。わぁいヽ(∇⌒ヽ)(ノ⌒∇)ノわぁい♪

こんな記事もありますよ


コメントの投稿

非公開コメント

Author's Profile ~自己紹介~

Genzo

Author:Genzo
PCは一応自作できるレベル。
ワード・エクセルなら基本的に
扱えるレベル。
プログラム・・・?ん?
VBA・・・?ん?ん??
それって美味しいですか?


~ 当ブログについて ~

~ Mail2Genzo  ~

Calender&Search かれんだーと検索

07 | 2018/08 | 09
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -

Access2Genzo内で検索

Category ~かてごりー~

Comments Tree ~こめんとつりー~


Link ~りんく~

ブロとも申請フォーム

Counter ~かうんた~

Since 2010/08/01:

Online:

タグクラウド

最新トラックバック

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。