• ベストアンサー

Access にて "mm:ss.0" 形式の 秒数を算出する方法

現在、Accessにて "mm:ss.0" 形式 の時刻データを秒数に変換する クエリの作成を試みていますが、小数点以下の秒数の算出方法が わからず困っています。 (MS-Access 2002) Excelでsecond関数を使用し、秒数を算出した場合は以下の通り、 秒数により小数点以下の扱いが異なります。 <Excelにてsecond関数を使用して秒数を計算した結果> ・00:13.5 …… 14秒(少数が丸められる) ・00:14.5 …… 14秒(少数が切り捨てられる) ・00:14.6 …… 14秒(少数が丸められる) Accessでは"mm:ss.0" というフォーマットが見当たらず、 Second関数も「抽出条件でデータ型が一致しません」と エラーとなってしまいます。 参考までに試行錯誤の軌跡を載せますが、以下のようなクエリを 作成しても、小数点の丸め処理が秒数によって.5と.6の場合があり、 やはり誤差が出てしまいます。 ** Val(Left([時刻], 2)) * 60 + Val(Mid([時刻],4 , 2)) + Round(Val(Right([時刻], 1)) / 10, 0) ※[時刻]カラムは"mm:ss.0"形式の文字列 ** AccessのクエリにてExcelのsecond関数と同様の結果を 得るにはどのようにすればよろしいでしょうか。

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

  • ベストアンサー
noname#182251
noname#182251
回答No.1

問題とされている点が良く判りません。VBAのRound関数はMS-Access 2000で「最近接偶数への丸め」なので多分2002でも同様だと思います。すると Debug.Print Round(13.5), Round(14.5), Round(14.6) の結果は 14 14 15 となりますが、それ以上にどのようになればよいのでしょうか?

HenryMancini
質問者

お礼

ご回答ありがとうございます。 「最近接偶数への丸め」の知識が不足していました。 調査したところ、丸め処理を行うプロシージャの作成方法が公開されていたので、 記載内容に基づいて丸め処理を実装しましたが(BRound関数を利用)、結局、浮動小数点演算での誤差を吸収することができませんでした。 ExcelのRound関数と申しましたが違いました。 実現したいことはRound関数と同様の結果を求めたいのではなく、Excelが自動で丸め処理を行った結果とAccessでの丸め処理結果を合わせたいのです。 ※タイトル文が不適切でした。申し訳ありません。 http://support.microsoft.com/default.aspx?scid=kb;ja;196652 以下の(A)と(B)はイミディエイトペイン内でBround関数を実行した結果です。 使用している数字、型は同じはずですが誤差が生じました。 やはりAccessにてExcelと同様の結果を再現するのは難しい、ということになりますね。 ■"00:01:48.5"を秒数に変換する例 ※Excelでは00:01:48.5をセルに入力すると自動的に00:01:49に丸められます (A) ? bround((CDbl(TimeValue("00:01:48")) + 5 / 864000) * 86400) 108 (B) ? bround( 1.25578703703704E-03 * 86400) 109 (参考) ? CDbl(TimeValue("00:01:48")) 0.00125 ? 1 / 864000 1.15740740740741E-06 ? CDbl(TimeValue("00:01:48")) + 5 / 864000 1.25578703703704E-03

その他の回答 (2)

  • ntaka
  • ベストアンサー率33% (1/3)
回答No.3

N0.2 です。数値を間違ってました。2→4 **** または Val(Left([時刻], 2)) * 60 + Val(Right([時刻],4))

HenryMancini
質問者

お礼

ご回答ありがとうございます。 NO1の方のお礼に書きましたが、ミリ秒の丸め処理をExcelとAccessで合わせたいのです。 ※質問文が不適切でした。申し訳ありません。

  • ntaka
  • ベストアンサー率33% (1/3)
回答No.2

Val(Left([時刻], 2)) * 60 + Val(Mid([時刻],4)) または Val(Left([時刻], 2)) * 60 + Val(Right([時刻],2)) で、どうでしょうか?

関連するQ&A

  • 24時間以上の秒数を[hh:mm:ss]にするには

    エクセルで、23時間59分59秒(86399秒)までの秒数は、秒数/3600/24をし、書式を[hh:mm:ss]にすれば、[23:59:59]と表示しますが24時間以上(86400秒以上)を入力すると、[0:00:00]となり0に戻ってしまいます。[24:00:00]と表示させるにはどうしたらよろしいでしょうか。

  • アクセス2003で秒数削除

    アクセス2003を使っています。 エクセルからデータをアクセスのあるテーブルにインポートしたのですが、そのデータには「時間」という項目があり、例えば、「17:45:33」という感じで、秒数まで入っています。 インポート先にテーブルには他のテーブルと「時間」でリレーションを組み、クエリを作っています。 ところが、他のテーブルの「時間」は秒数が入っておらず、上手くクエリが作れません。(手作業で秒数を消せば、上手くクエリができます、逆に手作業で秒数を入力すれば上手くクエリができます。) ここで質問ですが、そのインポートした「秒数が入っていないデータ」の時間の秒数を削除したいのですが、どうすれば良いのでしょうか? 単純にデザインビューで書式設定で、秒数を見えなくする設定ではクエリは成功しませんでした。(秒数が見えなくなっているだけで、秒数は存在するため) よろしくお願いします。

  • psの結果のTIME(hh:mm:ss形式)を秒数表示に変換したい

    HP-UXのbshでスクリプトを書いています。 psコマンドの結果のTIME(hh:mm:ss)をperl関数等で秒数表示に変換する方法か、 psのオプションでTIMEを秒数で表示させる方法を教えて下さい。 time=$(ps | awk '{print $3}') hour=$(echo $time | awk F=":"'{print $1}') minute=$(echo $time | awk F=":"'{print $2}') second=$(echo $time | awk F=":"'{print $3}') second=`expr hour * 3600 + minute * 60 + second` とやるのは面倒なんで1行でやりたいのです。

  • psの結果のTIME(hh:mm:ss形式)を秒数表示に変換したい

    psの結果のTIME(hh:mm:ss)を、perl関数等で秒数表示に変換する方法を教えて下さい。 perlじゃなくてawkやsedなんかでできるんならそれでも構いません。 別言語の関数を使わずともpsのオプションでTIMEを秒数で表示させる事ができるならそれでも構いません。 使うシェルはHP-UXのbshです。

    • ベストアンサー
    • Perl
  • 秒数表示を日付表示に変更する関数(Access)

    アクセス(2000以降のバージョン)での質問です。 日付表示が1970年1月1日00:00:00(グリニッジ標準時)からの 秒数表示となっているデータがあります。 このデータを「yyyy/mm/dd hh:mm:ss」(日本時間)表記に したいと考えています。 この内容をアクセスのクエリで、 秒数表示をひとつのフィールドに入れた状態で 別のフィールドに書き込める関数はあるでしょうか? できれば複数のフィールドを使わずに、 一つのフィールドのみでできるとありがたいです。 ある場合にはその方法を、 無いけどもこの方法で、というのがありましたら お教えいただけないでしょうか? アクセス自体がまだ不慣れなもので、 説明不足の箇所もあるかもしれませんが、 よろしくお願いいたします。

  • hh:mm:ssをmm:ssに換算

    エクセルのワークシート関数で1時間を超える時間(hh:mm:ss)を  分:秒(mm:ss)に換算するにはどうすれば良いでしょうか ? 例えば:  01:45:43  ----->105:30 時間を別セルに取り出して、同じく別セルに分を取り出して 時間数値に60を掛けて分に足せば出来ますが もっとスマートな方法がありますか ?

  • エクセル mm:ss.0

    エクセルで表示形式がmm:ss.0となっているセルで 条件を判定してフラグを立てたいのですがどうすれば上手くいでしょうか? mm:ss.0で1/10秒単位で時間が表示されています。 例えば10:00.0となれば"0"という風なフラグを立てたいのです。 それ以外は"1" 現在は =IF(B4="mm:ss.0",0,1) といった感じでやっているのですが上手くいきません。 よろしくお願いします。

  • Excelで経過秒数から年:月:日:秒を算出するには

    Excelで経過秒数からX年Xヶ月X日X秒を算出するにはどのような計算式となりますでしょうか

  • Excelで秒数を何分何秒と表示する方法

    Excelで入力は秒数で入力し、それを足していったときに結果表示を何分何秒とするためにはどのような関数が必要ですか?教えてください。

  • エクセルでhh:mm:ssを計算したいです

    エクセルでhh:mm:ssを計算したいです 「0:11:39」と入力されているセルの値を 「0:00:06」(6秒)で割るには、 どのような数式を作成すれば良いでしょうか。 ※端数は切り上げたいです。 例えば上記の場合、値は以下となって欲しいです。 0:11:39÷0:00:06=117 すみませんが、どなたか教えて下さい。 よろしくお願い致します。