この計算は select cast('2016-06-01 00:00:00' as datetime)-cast('2016-05-31 00:00:00' as datetime)
という結果になります。mysql日付で計算すると奇妙な結果が返される
私はその命令を使用すべきではないことを知っていますが、70000000は何か不思議です。
この計算は select cast('2016-06-01 00:00:00' as datetime)-cast('2016-05-31 00:00:00' as datetime)
という結果になります。mysql日付で計算すると奇妙な結果が返される
私はその命令を使用すべきではないことを知っていますが、70000000は何か不思議です。
まず、日付または日付時刻を差し引く方法ではありません。 1つはdatediff
とtimediff
です。ただ言って。したがって、MySQL Date and Time Functionsを参照してください。
しかし
select cast('2016-06-01 00:00:00' as datetime)-cast('2016-05-31 00:00:00' as datetime);
7000万
select cast('2016-06-01 00:00:00' as datetime)-cast('2016-05-30 00:00:00' as datetime);
7100万
select cast('2016-06-01 00:00:00' as datetime)-cast('2016-06-02 00:00:00' as datetime);
-1000000
select cast('2016-06-01 00:00:00' as datetime)-cast('123' as char(3));
を見て
20160600999877;
bigintsとして扱われるパターンを見ることができます。だから、
select 20160601000000 - 20160531000000;
7000万
select 20160601000000 - 20160530000000;
7100万
だから理由であると思われます。減算を行う場合@Drewとして
奇妙ですが、本当です。 –
ああ... 20160601-20160521 = 70 ....私は参照してください – jms
は、示しBIGINTとして扱われる:
$ mysql --column-type-info
mysql> SELECT
-> `der`.`DATE_1`,
-> `der`.`DATE_2`,
-> `der`.`DATE_1` - `der`.`DATE_2` DIFF
-> FROM (SELECT CAST('2016-06-01 00:00:00' AS DATETIME) `DATE_1`,
-> CAST('2016-05-31 00:00:00' AS DATETIME) `DATE_2`) `der`;
Field 1: `DATE_1`
Catalog: `def`
Database: ``
Table: `der`
Org_table: ``
Type: DATETIME
Collation: binary (63)
Length: 19
Max_length: 19
Decimals: 0
Flags: BINARY
Field 2: `DATE_2`
Catalog: `def`
Database: ``
Table: `der`
Org_table: ``
Type: DATETIME
Collation: binary (63)
Length: 19
Max_length: 19
Decimals: 0
Flags: BINARY
Field 3: `DIFF`
Catalog: `def`
Database: ``
Table: ``
Org_table: ``
Type: LONGLONG
Collation: binary (63)
Length: 16
Max_length: 8
Decimals: 0
Flags: BINARY NUM
-- 20160601000000 20160531000000
+---------------------+---------------------+----------+
| DATE_1 | DATE_2 | DIFF |
+---------------------+---------------------+----------+
| 2016-06-01 00:00:00 | 2016-05-31 00:00:00 | 70000000 |
+---------------------+---------------------+----------+
1 row in set (0,00 sec)
ああ、はるかに細かい答え。よくやった。 – Drew
'86 400 000ミリ秒を使用すると、減算期間です。私は70万人がどこから来ているのか分かりません。 –