こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Accessの日付抽出について

Accessを勉強しています。Accessで日付を抽出するときにたとえば「2011/9/2」なら教科書では「2011/09/02」と入れて抽出しています。
別に「2011/9/2」と入れてもまったく同じ結果なので0を入れる意味がわかりません。
これはなぜ0を入れるのでしょうか?
入れると何が違うのでしょう?

知っている方教えてください。

投稿日時 - 2011-09-02 08:51:39

QNo.6983697

困ってます

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

Accessのプログラムって、結構業務で使うことが多いので、出力用紙のフォーマットなどに制限を受けることが多いんです。

用紙に詰めて印刷するときデータは必ず「横一列」で印刷しますので、年月日の「出力桁数」が変わっちゃうと、後ろの方でデータが大きく桁ずれします。プレ印刷の縦線などがあるとそこではみ出したり、縦線を印刷するように制御していると、そこで縦線がギザギザになったりします。ですので、「年月日の出力桁数が変わらない」ように処理する方が後で楽なんですね。

特にCOBOLなどを経てきた古いプログラマーに、そういう傾向が強いです(COBOLなどでは先にデータ型を宣言するんで)。プログラミングを教える人は、大概そういう出自を持っているんで、教科書などでも「yyyy/mm/dd」を多用するんですね。

ちなみに私も、Accessで年月日を使うときは、必ず「yyyy/mm/dd」型を使い、前詰めすることはありませんよ。

投稿日時 - 2011-09-02 11:57:25

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

難しい話はされているようなので簡単なのを。
2011/12/12
2011/1/12
2011/11/15
2011/5/5
などとソート(並び替え)されていない状態だと、文字数によって凸凹して
見辛いし美しくない?ので
2011/12/12
2011/01/12
2011/11/15
2011/05/05
とした方が好まれるのではと。(データ的には一緒です)

日付時刻型は、内部的には倍精度浮動小数点型で、一日を1としてそれ以下は少数で表わされる。
Accessの場合のシリアル値の起点は 1899/12/30 00:00:00 から始まっています。
※倍精度浮動小数点型であっても、時分秒単位での計算で誤差が発生する可能性があります。
時給800円であさ8時から夕方5時までバイト
9時間×@800=7200
Accessで
(#17:00:00#-#8:00:00#)*24*800 とすると7200 が返ってきますが
これは数値が丸められて表示されているだけなので
((#17:00:00#-#8:00:00#)*24*800)-7200 とすると
1.06581410364015E-12 とごく僅かですが違いがあるのが分かります。
単純な計算の答えが合わない理由
http://pc.nikkeibp.co.jp/pc21/special/gosa/eg1.shtml
頭の隅に置いといてください。

なお、9/2とだけ入力すれば、Accessが自動的に今年の年と判断して2011/9/2としてくれます。

投稿日時 - 2011-09-02 10:29:04

ANo.1

フィールドの書式の問題ではないですか。
1994/06/19のような書式が標準のようです。テーブルのフィールドの「書式」(のドロップダウン)で確認してください。だから教科書では「2011/09/02」のような指定の解説になっているのでは.
アクセスのテーブルのデータとしてのフィールドの値は、別途どちらで入力しても同じ値がセットされる。
(文字列でなく)日付・時刻型の場合は違いが無い。
http://support.microsoft.com/kb/210276/ja
によると(エクセルの日付時刻のシリアル値とは、少し表せる範囲などが違うが)日付を整数部分、小数点部分は時刻を表すようで、基本はエクセルと同じような考え方に見える。これが日付・時刻のフィールドの値としての最終の姿としての実態です。
これに色々な書式を当てはめて、日付の表示を色々に見せる事が出来る。
参考 http://www.relief.jp/itnote/archives/000261.php

投稿日時 - 2011-09-02 09:44:59

あなたにオススメの質問