年は 4 桁の値として扱われますが、MySQL では日付値として指定するには文字列または数値に少なくとも 8 桁が必要です。この場合、マイクロ秒も保存したい場合、値は最大 20 桁になります。
mysql> Select TIMESTAMP('20171022040536.100000'); +-----------------------------------+ | TIMESTAMP('20171022040536100000') | +-----------------------------------+ | 2017-10-22 04:05:36.100000 | +-----------------------------------+ 1 row in set, 1 warning (0.00 sec)
上記のクエリは、TIMESTAMP 値として 20 桁の数値文字列を受け取ります。最後の 6 桁はマイクロ秒を表します。
mysql> Select TIMESTAMP(20171022); +---------------------+ | TIMESTAMP(20171022) | +---------------------+ | 2017-10-22 00:00:00 | +---------------------+ 1 row in set (0.00 sec)
上記のクエリは、TIMESTAMP 値として 8 桁の文字列を受け取ります。
mysql> Select TIMESTAMP(201710); +-------------------+ | TIMESTAMP(201710) | +-------------------+ | NULL | +-------------------+ 1 row in set, 1 warning (0.00 sec)
数値が 8 桁未満であるため、上記のクエリは NULL を返します。
対照的に、年を 2 桁の数値として扱う場合、MySQL が日付値として指定する文字列または数値には少なくとも 6 桁が必要です。この場合、マイクロ秒も保存したい場合、値は最大 18 桁になります。
mysql> Select TIMESTAMP(171022); +---------------------+ | TIMESTAMP(171022) | +---------------------+ | 2017-10-22 00:00:00 | +---------------------+ 1 row in set (0.00 sec)
上記のクエリは、TIMESTAMP 値として 6 桁の文字列を受け取ります。
mysql> Select TIMESTAMP('171022040536.200000'); +----------------------------------+ | TIMESTAMP('171022040536.200000') | +----------------------------------+ | 2017-10-22 04:05:36.200000 | +----------------------------------+ 1 row in set (0.00 sec)
上記のクエリは、TIMESTAMP 値として 18 桁の数値文字列を受け取ります。ドット (.) の後の最後の 6 桁はマイクロ秒を表します。
mysql> Select TIMESTAMP(1710); +-----------------+ | TIMESTAMP(1710) | +-----------------+ | NULL | +-----------------+ 1 row in set, 1 warning (0.00 sec)
桁数が 6 未満であるため、上記のクエリは NULL を返します。
以上がMySQL で日付値として指定される文字列または数値には何桁必要ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。