2017-02-26 4 views
0

私はタイプtimeのフィールドをマルチプレイしようとしています。ときどき動作し、時には動作しないことがあります。これはMySQLのphpmyadminにあります。私はすでに試してみましたMySQL - 掛け算時間の型の値 - いくつかの返信00:00:00

もの:

  • 私はグーグルで試してみました 「時の型を掛けるSQL 00:00:00」を返すが、それまたは類似検索とは運を持っていません。

  • 私はこれらすべての時間を引いて、 を6と11で乗算したPythonスクリプトを実行しました。これらはすべて00:00:00ではありませんでした。

  • 私はまた、行ごとに個別に試してみましたが、同じものについては が動作しませんでした。以下は

私はこのクエリを実行する前と後の写真です:

UPDATE journeys, travel_type 
SET journeys.jo_duration = journeys.jo_duration * travel_type.tt_duration_multiplier 
WHERE journeys.jo_type = travel_type.tt_id 

私はエラーを取得していません。

有用な情報: Type 1 means 11 - jo_durationの値に11を掛けたいとします。Type 3 means 6(同じ原則)。 2は1を意味します(何も変わりません)。

このテーブルにはこの問題が発生している行がさらにありますが、テーブル全体をスクリーンショットしたくありませんでした。これで十分だろうと思った。合計行は70行あります。上記のクエリを実行すると、47行が影響を受けると言います(すべての行が技術的に影響を受けるはずです)。タイプ2なので残りの部分が影響を受けていないのか、それとも00:00:00(またはその両方)になっているのか分かりません。

詳細が必要な場合は、お気軽にお問い合わせください。

ご覧のとおり、行はjo_id; 1, 3, 4, 6 are 00:00:00です。しかし、他のものは正しく増殖しますか?

これはなぜですか?そして私はそれをどうやって防ぐことができますか?

申し訳ありませんが長いポストと私は私の問題が理にかなったことを願っています! ありがとうございました!

前: enter image description here

後: enter image description here

答えて

0

あなたは直接、時間データ型に番号を乗算することはできません。

使用機能time_to_secとsec_to_time:

update journeys, travel_type 
set journeys.jo_duration = sec_to_time(
          time_to_sec(journeys.jo_duration) 
           * travel_type.tt_duration_multiplier 
          mod 86400) 
where journeys.jo_type = travel_type.tt_id 

mod 86400は時間が

+0

は完全に働いた日以上になると日の部分を削除することがあります!私は 'mod 86400'の部分を削除しました。エラーは「Unrecognized Keyword」です。 (modに近い) 'と' Unrecognized Token 'があ​​ります。 (近く86400 '。ありがとう@GurV! –