私はこれで何時間も忙しかったのですが、それを機能させることはできません。
SQL
SELECT DATEDIFF(end_time, start_time) as `difference` FROM timeattendance WHERE timeattendance_id = '1484'
start_time = 2012-01-01 12:00:00
end_time = 2012-01-02 13:00:00
差は25(時間)です。しかし、私が得る出力は1(日)です。
出力として25時間を取得するにはどうすればよいですか?
[〜#〜] timestampdiff [〜#〜] の使用はどうですか?
SELECT TIMESTAMPDIFF(HOUR, start_time, end_time)
as `difference` FROM timeattendance WHERE timeattendance_id = '1484'
DATEDIFFは比較する前にすべての時間を日付にキャストするため、DATEDIFFの代わりにTIMEDIFFを使用する方が適切です。 TIMEDIFFを実行した後、HOUR関数で時間を取得できます。
SELECT HOUR(TIMEDIFF(end_time, start_time)) as `difference`;
MySQL 参照 で述べたように、DATEDIFF
は数日しかかかりません。
両方の日付が1970年以降の場合、タイムスタンプを減算できます。
SELECT ( UNIX_TIMESTAMP("2012-01-02 13:00:00") -
UNIX_TIMESTAMP("2012-01-01 12:00:00") ) / 3600 ...
または:
SELECT TIMEDIFF ( "2012-01-02 13:00:00", "2012-01-01 12:00:00") / 3600 ...
TIMEDIFFおよびHOUR関数を使用して、時間を抽出できます。
SELECT HOUR(TIMEDIFF(end_time, start_time)) as `difference` FROM timeattendance WHERE timeattendance_id = '1484'
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_timediff
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_hour