ホームページ  >  記事  >  データベース  >  mysqlの時間型とは何ですか

mysqlの時間型とは何ですか

WBOY
WBOY転載
2023-06-01 10:19:051481ブラウズ
時刻タイプの選択

時刻フィールド タイプには、日時とタイムスタンプを指定できます。次の表に、この 2 つの違いを示します:

mysqlの時間型とは何ですか

timestamp Translated中国語にすると「タイムスタンプ」です。現在時刻から Unix の初年度 (1970 年 1 月 1 日 0:00:00) までの秒数です。4 バイトを占め、UTC 形式で保存されます。現在のタイムゾーンは自動的に取得され、変換されます。日時は 8 バイトで格納され、タイム ゾーンの取得は実行されません。つまり、タイムスタンプの場合、保存時のタイムゾーンと取得時のタイムゾーンが異なると、取り出されるデータも異なります。日時の場合は、保存したものが取得されます。ここでは、一般的なケースと選択のヒントをいくつか示します。

  • 製造時期や賞味期限などの保存範囲に応じて選択してください。datetime の方が保存できる範囲が広いため、datetime を選択することをお勧めします。

  • このデータ行の挿入時刻と変更時刻を記録するには、タイムスタンプを使用することをお勧めします。

  • タイムゾーンに関連する時間フィールドのタイムスタンプを選択します。

  • 年、日付、時刻を表すだけの場合は、年、日付、時刻を使用することもできます。これらはそれぞれ 1 バイト、3 バイト、3 バイトを占有します。彼らのセットです。

タイムスタンプ フィールドがクエリで頻繁に使用される場合は、MySQL の組み込み関数 FROM_UNIXTIME()UNIX_TIMESTAMP() を使用することもできます。日付を変換します。タイムスタンプ数値を使用して前後に変換します。変換後、INT UNSIGNED を使用して時刻を保存できます。数値は連続しており、占有スペースが少なく、インデックスを使用してクエリのパフォーマンスを向上させることができます。以下は、テーブル作成ステートメントとタイムスタンプ関連の変換 SQL のサンプルです:

CREATE TABLE `tb_time` (
  `increment_id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主键',
    `col1` datetime NOT NULL DEFAULT '2020-10-01 00:00:00' COMMENT '到期时间',
    `unix_createtime` int unsigned NOT NULL COMMENT '创建时间戳',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  PRIMARY KEY (`increment_id`),
  KEY `idx_unix_createtime` (`unix_createtime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='time测试表';
# 插入数据
insert into tb_time (unix_createtime,create_time) values 
(UNIX_TIMESTAMP(now()),now());
# 时间戳数字与时间相互转换
select UNIX_TIMESTAMP('2020-05-06 00:00:00')
select FROM_UNIXTIME(1588694400)

以上がmysqlの時間型とは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。