このページは機械翻訳したものです。
        MySQL では、マイクロ秒 (6 桁) までの精度で、TIME、DATETIME および TIMESTAMP 値の小数秒がサポートされています:
      
- 
小数秒部を含むカラムを定義するには、 type_name(fsp)type_nameはTIME、DATETIME、またはTIMESTAMPであり、fspは小数秒の精度です。 例:CREATE TABLE t1 (t TIME(3), dt DATETIME(6));fsp値を指定する場合、0 から 6 の範囲にする必要があります。 0 の値は、小数部がないことを表します。 省略した場合、デフォルトの精度は 0 です。 (これは、以前の MySQL バージョンと互換性を保つため、標準 SQL のデフォルトである 6 とは異なっています。)
- 
小数秒の部分を含む TIME、DATEまたはTIMESTAMP値を同じタイプのカラムに挿入すると、小数点以下の桁数が少なくなります。 次のように作成および移入されたテーブルについて考えてみます:CREATE TABLE fractest( c1 TIME(2), c2 DATETIME(2), c3 TIMESTAMP(2) ); INSERT INTO fractest VALUES ('17:51:04.777', '2018-09-08 17:51:04.777', '2018-09-08 17:51:04.777');時間値は丸めでテーブルに挿入されます: mysql> SELECT * FROM fractest; +-------------+------------------------+------------------------+ | c1 | c2 | c3 | +-------------+------------------------+------------------------+ | 17:51:04.78 | 2018-09-08 17:51:04.78 | 2018-09-08 17:51:04.78 | +-------------+------------------------+------------------------+このような丸め行われたときに、警告やエラーは表示されません。 この動作は SQL 標準に従います。 かわりに切捨てを使用して値を挿入するには、 TIME_TRUNCATE_FRACTIONALSQL モードを有効にします:SET @@sql_mode = sys.list_add(@@sql_mode, 'TIME_TRUNCATE_FRACTIONAL');この SQL モードを有効にすると、時間値は切捨てとともに挿入されます: mysql> SELECT * FROM fractest; +-------------+------------------------+------------------------+ | c1 | c2 | c3 | +-------------+------------------------+------------------------+ | 17:51:04.77 | 2018-09-08 17:51:04.77 | 2018-09-08 17:51:04.77 | +-------------+------------------------+------------------------+
- 時間引数を取る関数は、小数秒を含む値を受け入れます。 時間関数からの戻り値には、必要に応じて小数秒が含まれます。 たとえば、引数を付けない - NOW()は、小数部のない現在の日付と時間を返しますが、0 から 6 のオプション引数を取って、その桁数の小数秒部が戻り値に含まれていることを指定します。
- 時間リテラルの構文は、 - DATE '、- str'- TIME '、および- str'- TIMESTAMP 'の時間値と ODBC 構文同等の値を生み出します。 指定されている場合、結果の値には後続の小数秒部分が含まれます。 以前は、時間型キーワードは無視され、これらの構造は文字列値を生成していました。 標準 SQL と ODBC の日付および時間リテラルを参照してください- str'