以下のような単純な表を考えた場合、当日の勤務時間の計算としては、TIMEDIFF 関数を使います
create table `出退勤トラン` ( `社員コード` varchar(4) ,`日時` date ,`出勤` datetime ,`退勤` datetime ,primary key(`社員コード`) )
TIMEDIFF と DATEDIFF は、それぞれ時間と日付に対して演算を行います。結果として TIMEDIFF は、時刻表示で経過時間をあらわすため、23:59:59 より大きい経過を実行しようとするとエラーになります。
DATEDIFF は経過日数を整数で表すのですが、日付部分が変わると、経過時間が 1 秒でも 1 日を返します。
select 社員コード, 退勤, 出勤, TIMEDIFF(退勤,出勤) as 経過時間, DATEDIFF(退勤,出勤) as 経過日数 from 出退勤トラン
▼ SQL 実行の結果
社員コード | 退勤 | 出勤 | 経過時間 | 経過日数 |
---|---|---|---|---|
0001 | 2014/10/12 16:27:44 | 2014/10/11 16:27:45 | 2014/10/11 23:59:59 | 1 |
0002 | 2014/10/11 16:27:46 | 2014/10/11 16:27:45 | 2014/10/11 0:00:01 | 0 |
0003 | 2014/10/12 0:00:01 | 2014/10/11 16:27:45 | 2014/10/11 7:32:16 | 1 |
0004 | 2014/10/11 23:59:59 | 2014/10/11 16:27:45 | 2014/10/11 7:32:14 | 0 |
0005 | 2014/10/12 | 2014/10/11 23:59:59 | 2014/10/11 0:00:01 | 1 |
※ 経過時間の日付部分は、SQLを実行した日の日付です
タグ:MySQL
|
【MySQLの最新記事】
- MySQL に PIPES_AS_CONCAT を設定して、CSV を出力する SQL
- MySQL : DB のデータを簡単に沢山作る方法は inner join
- MySQL で、Group by して合算された行内で最新データの明細を再び取り出す SQL
- MySQL のコマンドラインの操作
- Windows 環境の MySQL から日本語名のテーブルを コマンドプロンプトでエクスポート(mysqldump.exe)する
- MySQLの日本語オンラインマニュアル、5.6 とその中のいくつかの重要なリンク
- MySQL のコマンドプロンプトからの処理用バッチファイル
- MySQL で、主キーの作り変えのプロセス / serial では、自動的に インデックスが作成されます
- MySQL 5.6 (Generally Available (GA) Releases) インストール
- MySQL : 引数の無い LAST_INSERT_ID() と 引数のある LAST_INSERT_ID( n ) の使用方法
- MySQL における AUTO_INCREMENT 列の設定および詳細
- MySQL のプログラムからの経過時間の表現方法( CAST, STR_TO_DATE, GET_FORMAT, DATE_FORMAT, TIMEDIFF )
- MySQL を UTF-8 環境で作成して、mysqldump.exe でバックアップするバッチファイルのサンプル
- MySQL 5.6 : テストデータ自動作成スクリプト
- PHP + MySQL : Windows の COM を使った ODBC 経由での接続とデータの取得(SELECT)
- VBScript + MySQL : ADO( ODBC ) による接続とデータの取得(SELECT)
- PHP + MySQL : Windows における ODBC 経由での接続とデータの取得(SELECT)
- PHP + MySQL : PDO_MySQL での接続とデータの取得(SELECT)
- PHP + MySQL : MySQL 改良版拡張モジュール mysqli クラスでの接続とデータの取得(SELECT)
- PHP + MySQL : PHP 5.5.0 で非推奨の MySQL 関数での接続とデータの取得(SELECT)