• ベストアンサー

SQL Serverのテーブルにて時間の計算をしたい

お世話になります。 勤怠管理のアプリを作っています。 テーブル:SQL Server フロントエンド:MS Access 時間の計算ができません。 [日付] [出勤時刻] [退勤時刻] [勤務時間] というフィールドを作成したのですが、 勤務時間の計算はどのように行えばよろしいでしょうか? それぞれのデータ型はどのようにすればよろしいでしょうか? 単純に考えると[退勤時刻]-[出勤時刻]ですが……。 テーブルもMS Accessの場合はこのような計算式で勤務時間を算出できたのですが、SQL Serverに移行する場合がわかりません。 みなさま、どうぞよろしくお願いします。 ※質問文に不足・不明点がある場合はご指摘いただければ  補足欄にて追記させていただきます

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

  • ベストアンサー
noname#22222
noname#22222
回答No.2

デザイナーでプロではありませんが、チクッと試してみました。 <SQL Server 2000のテーブルをAccessのフォームに表示する> ID     日付         出勤時刻 退勤時刻  勤務時間 1      2006/06/10    8:00:00  17:30:00        0 2      2006/06/10    8:00:00  18:30:00 0    |(expession)| ----|------------   1|09:30    |   2|10:30    | 上のテーブルから勤務時間を計算してAccessのフォームに表示してみました。 一応、目的は達成したようです。 ・smalldatetime。 ・SQL文は、 SELECT convert(char(5),退勤時刻 -出勤時刻,14) FROM Table1; Boolsonline で convert で検索してSQL文を書いてみました。 ※なんせ、素人です。 ※本回答を待つ間の参考にして下さい。

motsu2006
質問者

お礼

ご回答、ありがとうございます。 お礼が遅くなりまして、申し訳ありませんでした。 せっかくご回答いただいたのですが、私が余りに勉強不足のため理解できないままです。 結局、nvarchara型にしてhh:mm形式でデータを持つことになりそうです。 秒単位が省略されてしまいますが、フロントエンドがAccessでクエリベース・私の無知が故にかなりの妥協案ではありますが……。 そうなると、24時以降の勤務時間が保持(計算)できないんですがね……。

その他の回答 (1)

回答No.1

MS SQL Server なら、datetime 型で datediff 関数でしょうか (私は、日時自体を特定時点からの秒数で保存しています)。

motsu2006
質問者

お礼

ご回答、ありがとうございます。 お礼が遅くなりまして、たいへん申し訳ありません。 日時型にしてしまうと、月末の訂正入力(一括入力時)に日付まで入力しなければならなくなるため、日付型はあきらめました。

関連するQ&A