- 締切済み
Access2000でのデータ型について
日付・時刻型というデータ型はあるですが、時間型というのは、どうすればよいのでしょうか? 例えば、毎日のトレーニング時間を記録し、その記録データの平均や合計を出したいのですが・・・ よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- Nii
- ベストアンサー率48% (79/162)
書式を dd hh:nn:ss としたら、 25:00→01 01:00:00 60:00→02 12:00:00 と表示されると思います。 日付・時刻型というデータ型を使用している限り、 1日→24時間 1時間→60分 という呪縛からは逃れられないでしょう。 日数計算等をする時には、閏年等を考慮しなくてすむので、非常に便利なのですが、今回の用件からは、ずれてしまっていたみたいですね。すみません。 60:00のように表示したいのならば、時・分、別々のフィールドを作成し、小計:[時]*60+[分]てな具合に、最小の桁にあわせて変換し、その値元にを合計・平均を求めて、最後の表示の時点で、合計:Format([小計] \ 60,"00") & ":" & Format([小計] mod 60,"00")みたいにする位しか思いつかないのですが。 なお、入力フォームを作成されているのならば、テーブルには分に変換後の数値を入れてもいいかな?と思います。 只、その場合、表示の時は、計算して表示しなければならないので、コントロールソースで、フィールドは指定出来ませんが・・・ メモ Mod 2つの数値の除算を行い、その剰余を返します。 \ 2つの数値の商を計算し、結果を整数で返します。
- Nii
- ベストアンサー率48% (79/162)
>前提のデータ型は、やはり、日付/時刻型でしょうか? そうです。 >そうであると、合計、平均が出ないのですが・・・ 例 テーブル 時間 日付/時刻型 クエリ-----最初は、合計を SELECT Sum(テーブル.時間) AS 時間の合計 FROM テーブル; このままプレビューすれば、小数点の数値で表示されてしまいますが、時間の合計フィールドのプロパティを開き、書式を、時刻 (S)にすれば、合計あいません? クエリ2---合計と平均を SELECT Sum(テーブル.時間) AS 時間の合計, Count(テーブル.時間) AS 時間のカウント, [時間の合計]/[時間のカウント] AS 平均 FROM テーブル; 以上、クエリで例を示したつもりですが、最終が、文字列という事でしたら、Format関数で作成出きると思います。
- Nii
- ベストアンサー率48% (79/162)
テーブルを作成された時に、書式(?)という項目が左下にありませんでした? そこの書式を"HH:MM:SS"とされたら、テーブルをプレビューした時に、12:59:59てな具合に表示されると思います。 他の書き方とか、より詳しくは、その項目で、F1キーを押したら、HELPが表示されると思いますので、そちらを参考して下さい。 入力は、:を入力する分手間がかかってしまうと思いますが、合計・平均は、そのまま計算出来たと思いますので、60進を10進に置き換えながら入力するよりかはいいと思いますよ。(入力フォームの工夫でいくらでも逃げれますし) 後、時間差を求める時は、datediff関数、何日後とか、何時間後とかは、dateadd関数を使用されればと思います。 なお、Accessを参照せずに、記憶のみで記入してますので、間違ってるかも・・・
補足
Niiさん、回答ありがとうございます。 データ型という大枠の中に一つのパラメータとして書式というものがあると理解しますが、Niiさんの回答の前提のデータ型は、やはり、日付/時刻型でしょうか? そうであると、合計、平均が出ないのですが・・・ ご検討ください。
- kitunekko
- ベストアンサー率53% (7/13)
エクセルでは時間・日付のデータは 「シリアル値」で管理しています。表示は1:00となっていても、計算に使われるのはシリアル値なので そのまま計算するとうまくいきません。 シリアル値を時間的(?)数値にするには、その値を"1:00:00"で割ってやります。計算対象となる数値をすべて処理してから、もしくは計算後にこの処理をしてやると、うまくいきます。 ちなみに24時間をこえると、日付のほうに繰り上がりが生じてしまいますので、(つまり24時間を越えるとまた0時間になってしまう)セルの表示形式を「標準」に戻しておくと、24時間を超える時間についても表示できます。 なお、計算の時はダブルクォーテーションをつけたまま割ってください。 例: =A5/"1:00:00" これでたぶん上手くいくと思います。
時間を10進数で表現するなら通常の通貨型でいいのでは ないでしょうか?2時間30分なら2.5って感じで。 60進数で表現するなら集計する際に10進数に変換する必要があるかと思います。
補足
Niiさん、こんにちは 毎度、回答いただき、恐縮です。 ご教示に基づき、作業したところ、計算できるようになりました。但し、合計が24時間を越すと、以下のように表示されてしまいます。対処法ありますでしょうか? 25:00 → 1:00 60:00 12:00 よろしくお願いします。