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

解決済みの質問

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

お世話になります。

勤怠管理のアプリを作っています。

テーブル:SQL Server
フロントエンド:MS Access

時間の計算ができません。
[日付] [出勤時刻] [退勤時刻] [勤務時間]
というフィールドを作成したのですが、
勤務時間の計算はどのように行えばよろしいでしょうか?
それぞれのデータ型はどのようにすればよろしいでしょうか?

単純に考えると[退勤時刻]-[出勤時刻]ですが……。
テーブルもMS Accessの場合はこのような計算式で勤務時間を算出できたのですが、SQL Serverに移行する場合がわかりません。

みなさま、どうぞよろしくお願いします。

※質問文に不足・不明点がある場合はご指摘いただければ
 補足欄にて追記させていただきます

投稿日時 - 2006-06-21 16:19:23

QNo.2229463

すぐに回答ほしいです

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

デザイナーでプロではありませんが、チクッと試してみました。

<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文を書いてみました。

※なんせ、素人です。
※本回答を待つ間の参考にして下さい。

投稿日時 - 2006-06-21 17:14:25

お礼

ご回答、ありがとうございます。
お礼が遅くなりまして、申し訳ありませんでした。

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

投稿日時 - 2006-06-23 22:07:47

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

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

回答(2)

ANo.1

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

投稿日時 - 2006-06-21 17:13:12

お礼

ご回答、ありがとうございます。
お礼が遅くなりまして、たいへん申し訳ありません。

日時型にしてしまうと、月末の訂正入力(一括入力時)に日付まで入力しなければならなくなるため、日付型はあきらめました。

投稿日時 - 2006-06-23 22:03:39

あなたにオススメの質問