エラーテストmysql時間の減少の問題(bug)
4574 ワード
この文章を書く前に、xxxはすでにいくつかの間違いテストのテーマについての文章を書いたことがあります.知りたい人は前の文章をめくってもいいです.
mysql時間の減少の問題(bug)
明日宁青の学友の1本の微博を见て、mysqlの日付の相减の间违った结果に言及して、前にあまり気をつけていないで、そこでテストして、発明は确かにとても穴のお父さんで、とても雷を踏むことができて、そこで客博を整理してみんなにヒントを与えます.まず、誤った光景を見ると、第1条が正しく、第2、第3条のt 2-t 1が正しくない.
全体テストの本足は以下の通りです.
現実はmysqlの時間の相殺は1つの暗黙的な転換をして体操をして、時間を数に変換して、しかし実はunix_ではありませんtimestamp変換ではなく、年月日分秒を直接つなぎ合わせて、2013-04-21 16:59:33のように20130421165933に直接変換します.時間は十進法ではないので、最後に得た結果は意味がありません.これも次の穴のお父さんの結果になります.
毎日同じ理屈
成熟は1种の明るくてまぶしくない辉きで、1种の丸くて耳に饱きない音响で、1种は他の人に颜を见る必要がない余裕で、1种はついに周囲に诉える大気を止めて、1种は騒ぐ微笑みを相手にしないで、1种は偏激な淡漠を洗って、1种は声张する必要がない厚実で、1种は実は急峻ではありません高さ.
正確な時間に秒値を減算するには、1、time_to_sec(timediff(t2, t1)),2、timestampdiff(second, t1, t2),3、unix_timestamp(t2) -unix_timestamp(t1)
この問題は2003年にmysql 4にある.0のバージョンはフィードバックですが、mysql公式はバグとは思いません.mysqlは時間の直接的な減算をサポートしていないと思っているので、専用関数で処理すべきだと思っていますので、直一は修正していません.しかし、これは誤りを直接報告するか、明確な結果を示すか、使いやすいと思います.
私の新浪微博http://weibo.com/yzsind
文章は终わってみんなに次のプログラマーのいくつかのジョークの语录を分かち合います:あなたはあなたの彼女(あるいはいかなる女性)にあなたと李彦宏の间から1つを选ばせて、あなたは彼女が谁を选ぶと思いますか?答え:李艶紅という負け犬のため、私は彼女がいません!
mysql時間の減少の問題(bug)
明日宁青の学友の1本の微博を见て、mysqlの日付の相减の间违った结果に言及して、前にあまり気をつけていないで、そこでテストして、発明は确かにとても穴のお父さんで、とても雷を踏むことができて、そこで客博を整理してみんなにヒントを与えます.まず、誤った光景を見ると、第1条が正しく、第2、第3条のt 2-t 1が正しくない.
mysql> select t1,t2,t2-t1 from mytest;
+---------------------+---------------------+-------+
| t1 | t2 | t2-t1 |
+---------------------+---------------------+-------+
| 2013-04-21 16:59:33 | 2013-04-21 16:59:43 | 10 |
| 2013-04-21 16:59:33 | 2013-04-21 17:00:33 | 4100 |
| 2013-04-21 16:59:33 | 2013-04-21 17:59:35 | 10002 |
+---------------------+---------------------+-------+
3 rows in set
全体テストの本足は以下の通りです.
--
mysql> CREATE TABLE mytest (
t1 datetime,
t2 datetime
);
Query OK, 0 rows affected
--
mysql> insert into mytest(t1,t2) values('2013-04-21 16:59:33','2013-04-21 16:59:43');
Query OK, 1 row affected
mysql> insert into mytest(t1,t2) values('2013-04-21 16:59:33','2013-04-21 17:00:33');
Query OK, 1 row affected
mysql> insert into mytest(t1,t2) values('2013-04-21 16:59:33','2013-04-21 17:59:35');
Query OK, 1 row affected
--
mysql> select t1,t2,t2-t1 from mytest;
+---------------------+---------------------+-------+
| t1 | t2 | t2-t1 |
+---------------------+---------------------+-------+
| 2013-04-21 16:59:33 | 2013-04-21 16:59:43 | 10 |
| 2013-04-21 16:59:33 | 2013-04-21 17:00:33 | 4100 |
| 2013-04-21 16:59:33 | 2013-04-21 17:59:35 | 10002 |
+---------------------+---------------------+-------+
3 rows in set
現実はmysqlの時間の相殺は1つの暗黙的な転換をして体操をして、時間を数に変換して、しかし実はunix_ではありませんtimestamp変換ではなく、年月日分秒を直接つなぎ合わせて、2013-04-21 16:59:33のように20130421165933に直接変換します.時間は十進法ではないので、最後に得た結果は意味がありません.これも次の穴のお父さんの結果になります.
毎日同じ理屈
成熟は1种の明るくてまぶしくない辉きで、1种の丸くて耳に饱きない音响で、1种は他の人に颜を见る必要がない余裕で、1种はついに周囲に诉える大気を止めて、1种は騒ぐ微笑みを相手にしないで、1种は偏激な淡漠を洗って、1种は声张する必要がない厚実で、1种は実は急峻ではありません高さ.
mysql> select t1,
t2,
convert(t1, UNSIGNED INTEGER) ct1,
convert(t2, UNSIGNED INTEGER) ct2,
t2-t1,
convert(t2, UNSIGNED INTEGER) -convert(t1, UNSIGNED INTEGER) diff0
from mytest;
+-------------------+-------------------+--------------+--------------+-----+-----+
|t1 |t2 |ct1 |ct2 |t2-t1|diff0|
+-------------------+-------------------+--------------+--------------+-----+-----+
|2013-04-21 16:59:33|2013-04-21 16:59:43|20130421165933|20130421165943| 10| 10|
|2013-04-21 16:59:33|2013-04-21 17:00:33|20130421165933|20130421170033| 4100| 4100|
|2013-04-21 16:59:33|2013-04-21 17:59:35|20130421165933|20130421175935|10002|10002|
+-------------------+-------------------+--------------+--------------+-----+-----+
3 rows in set
正確な時間に秒値を減算するには、1、time_to_sec(timediff(t2, t1)),2、timestampdiff(second, t1, t2),3、unix_timestamp(t2) -unix_timestamp(t1)
--
mysql> select t1,
t2,
t2-t1,
time_to_sec(timediff(t2, t1)) diff1,
timestampdiff(second, t1, t2) diff2,
unix_timestamp(t2) -unix_timestamp(t1) diff3
from mytest;
+---------------------+---------------------+-------+-------+-------+-------+
| t1 | t2 | t2-t1 | diff1 | diff2 | diff3 |
+---------------------+---------------------+-------+-------+-------+-------+
| 2013-04-21 16:59:33 | 2013-04-21 16:59:43 | 10 | 10 | 10 | 10 |
| 2013-04-21 16:59:33 | 2013-04-21 17:00:33 | 4100 | 60 | 60 | 60 |
| 2013-04-21 16:59:33 | 2013-04-21 17:59:35 | 10002 | 3602 | 3602 | 3602 |
+---------------------+---------------------+-------+-------+-------+-------+
3 rows in set
この問題は2003年にmysql 4にある.0のバージョンはフィードバックですが、mysql公式はバグとは思いません.mysqlは時間の直接的な減算をサポートしていないと思っているので、専用関数で処理すべきだと思っていますので、直一は修正していません.しかし、これは誤りを直接報告するか、明確な結果を示すか、使いやすいと思います.
私の新浪微博http://weibo.com/yzsind
文章は终わってみんなに次のプログラマーのいくつかのジョークの语录を分かち合います:あなたはあなたの彼女(あるいはいかなる女性)にあなたと李彦宏の间から1つを选ばせて、あなたは彼女が谁を选ぶと思いますか?答え:李艶紅という負け犬のため、私は彼女がいません!