48

私はこれで何時間も忙しかったが、それを機能させることができない。

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時間を出力として取得するにはどうすればよいですか?

4

4 に答える 4

115

TIMESTAMPDIFFの使用はどうですか?

SELECT TIMESTAMPDIFF(HOUR, start_time, end_time) 
           as `difference` FROM timeattendance WHERE timeattendance_id = '1484'
于 2012-07-20T13:07:27.803 に答える
17

DATEDIFFは比較する前にすべての時間を日付にキャストするため、DATEDIFFの代わりにTIMEDIFFを使用することをお勧めします。TIMEDIFFを実行した後、HOUR関数で時間を取得できます。

SELECT HOUR(TIMEDIFF(end_time, start_time)) as `difference`;
于 2012-07-20T13:09:46.930 に答える
5

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

于 2012-07-20T13:11:23.450 に答える
5

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 ... 
于 2012-07-20T13:07:34.653 に答える