SQLの窓

2014年10月12日


MySQL のプログラムからの経過時間の表現方法( CAST, STR_TO_DATE, GET_FORMAT, DATE_FORMAT, TIMEDIFF )

MySQL で datetime 型に入っているデータを使って、24時間未満の経過時間を取得するのには、TIMEDIFF 関数を使います。

MySQL で出退勤の列を datetime 型で持った場合、列を使用して DATEDIFF と TIMEDIFF で直接計算

しかし、プログラマから実際に渡すのは文字列である事が殆どなので、TIMEDIFF を使う前提条件として、CAST, STR_TO_DATE, GET_FORMAT, DATE_FORMAT 関数が必要になります。

MySQL 5.1 リファレンスマニュアル :: 11.5 日付時刻関数

CAST と STR_TO_DATE は、'(シングルクォート)で表現された日付データを実際の日付データとして MySQL に認識させる為に使用します。STR_TO_DATE 関数を使用する場合は、文字列のフォーマットに合わせてフォーマット文字列を用意する必要があります。また、その文字列をある程度自動で取得する方法が、GET_FORMAT 関数です( 使える場面は限定的ですが )。そして、TIMEDIFF の結果として意味のある部分は時刻部分なので、DATE_FORMAT 関数で時刻部分のみを取り出すようにしいます。
select
   DATE_FORMAT(
     TIMEDIFF(
        STR_TO_DATE('2014/10/12 16:27:43', '%Y/%m/%d %H:%i:%s'),
        STR_TO_DATE('2014/10/11 16:27:44', '%Y/%m/%d %H:%i:%s')
     ), '%H:%i:%s' ) as 経過時間1,

   GET_FORMAT(DATETIME,'JIS') as 標準フォーマット,

   DATE_FORMAT(
      TIMEDIFF(
         STR_TO_DATE('2014-10-12 16:27:43', GET_FORMAT(DATETIME,'JIS')),
         STR_TO_DATE('2014-10-11 16:27:44', GET_FORMAT(DATETIME,'JIS'))
    ), '%H:%i:%s' ) as 経過時間2,

   DATE_FORMAT(
      TIMEDIFF(
         CAST('2014-10-12 16:27:43' as datetime),
         CAST('2014-10-11 16:27:44' as datetime)
    ), '%H:%i:%s' ) as 経過時間3


上の SQL の実行結果は以下のようになります





タグ:MySQL
【MySQLの最新記事】
posted by lightbox at 2014-10-12 16:31 | MySQL | このブログの読者になる | 更新情報をチェックする
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり