sql >> データベース >  >> RDS >> Mysql

timediffの予期しない結果

    編集: どのバージョンのMySQLを使用していますか?少なくとも5.0.22では正常に動作します。このクエリを実行しました。こちらをご覧ください

     mysql> SELECT TIME_TO_SEC(TIMEDIFF('2000:01:01 00:00:00', '2001:01:01 00:00:00'));
     +---------------------------------------------------------------------+
     | TIME_TO_SEC(TIMEDIFF('2000:01:01 00:00:00', '2001:01:01 00:00:00')) |
     +---------------------------------------------------------------------+
     |                                                           -31622400 |
     +---------------------------------------------------------------------+
     1 row in set (0.00 sec)
    

    こちらをご覧ください切り捨ての問題である可能性があります 時間範囲は、現在の日付の差よりもはるかに小さいためです。

    元の回答

    これを使用

        SELECT TIMESTAMPDIFF(SECOND,'2000:01:01 00:00:00', '2001:01:01 00:00:00');
        +--------------------------------------------------------------------+
        | TIMESTAMPDIFF(SECOND,'2000:01:01 00:00:00', '2001:01:01 00:00:00') |
        +--------------------------------------------------------------------+
        |                                                           31622400 |
        +--------------------------------------------------------------------+
    

    問題は、負の時間を秒単位の時間に変換しようとしていることです。変数を交換することで仕事ができます。

        SELECT TIME_TO_SEC(TIMEDIFF('2001:01:01 00:00:00','2000:01:01 00:00:00'));
        +--------------------------------------------------------------------+
        | TIME_TO_SEC(TIMEDIFF('2001:01:01 00:00:00','2000:01:01 00:00:00')) |
        +--------------------------------------------------------------------+
        |                                                           31622400 |
        +--------------------------------------------------------------------+
    



    1. Dapper を SQL 空間型と共にパラメーターとして使用する

    2. java.lang.ClassNotFoundException:org.postgresql.Driver、Android

    3. テーブル値パラメータを変更する方法

    4. MAMPMySQLがOSXでmy.cnf値を認識しない