5 つのタイプがあります: 1. YEAR、年を表すために使用され、形式は「YYYY」です; 2. TIME、時間情報のみを必要とする値に使用され、形式は「HH:MM」です:SS"; 3、DATE、日付値のみが必要な場合に使用され、形式は「YYYY-MM-DD」です。 4. DATETIME、日付と時刻の両方の情報を含む必要がある値に使用され、形式はは "YYYY-MM-DD HH:MM:SS" ;5. TIMESTAMP は、DATETIME と同様に、日付と時刻の両方の情報を含む必要がある値に使用されます。
このチュートリアルの動作環境: Windows7 システム、mysql8 バージョン、Dell G3 コンピューター。
MySQL には日付を表す複数のデータ型があります: YEAR、TIME、DATE、DTAETIME、TIMESTAMP。
タイプ名 | 日付形式 | 日付範囲 | ストレージ要件 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
年###### YYYY | 1901 ~ 2155 | 1バイト | |||||||||
-838:59:59 ~ 838:59:59 | 3バイト | 日付###### YYYY-MM-DD | |||||||||
3バイト | 日付時刻###### YYYY-MM-DD HH:MM:SS | 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 | |||||||||
タイムスタンプ | YYYY-MM-DD HH:MM:SS | 1980-01-01 00:00:01 UTC ~ 2040-01-19 03:14:07 UTC | |||||||||
YEAR 型 YEAR 型は年を表すために使用されるシングルバイト型で、格納に必要なデータは 1 バイトのみです。 YEAR は、次のようなさまざまな形式で指定できます。
TIME 型 TIME 型は、時間情報のみを必要とし、格納に 3 バイトを必要とする値に使用されます。形式は TIME 型の値の範囲は -838:59:59~838:59:59 です。時の部分が大きいのは、TIME 型は時刻を表すだけではないためです。 1 日 (24 時間未満である必要があります)、イベントからの時間、または 2 つのイベントの間の時間 (24 時間を超えることも、負の値になる場合もあります) であることもあります。 TIME 値は、以下に示すように、さまざまな形式を使用して指定できます。
#例 TIME テーブルでデータ型を使用する例を見てみましょう。 まず、id、name、start_at、end_at の 4 つの列を含む、tests という名前の新しいテーブルを作成します。 start_at 列と end_at 列のデータ型は TIME です。CREATE TABLE tests ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) NOT NULL, start_at TIME, end_at TIME ); ログイン後にコピー INSERT INTO tests(name,start_at,end_at) VALUES('Test 1', '08:00:00','10:00:00'); ログイン後にコピー SELECT name, start_at, end_at FROM tests; ログイン後にコピー DATE 型 DATE 型は、日付値のみが必要な場合に使用されます。時刻部分の格納には 3 バイトが必要です。日付形式は「YYYY-MM-DD」です。YYYY は年、MM は月、DD は日を表します。 DATE 型フィールドに値を割り当てる場合、DATE の日付形式に準拠していれば、文字列型または数値型のデータを挿入できます。以下に示すように:
示例 我们来看看下面的例子。 首先,创建一个新表名为people,其中出生日期列为DATE数据类型。 CREATE TABLE people ( id INT AUTO_INCREMENT PRIMARY KEY, first_name VARCHAR(50) NOT NULL, last_name VARCHAR(50) NOT NULL, birth_date DATE NOT NULL ); ログイン後にコピー 接下来,在people表中插入一行。 INSERT INTO people(first_name,last_name,birth_date) VALUES('John','Doe','1990-09-01'); ログイン後にコピー 然后,查询数据来自people表。 SELECT first_name, last_name, birth_date FROM people; ログイン後にコピー 之后,使用两位数年份格式将数据插入people表中。 INSERT INTO people(first_name,last_name,birth_date) VALUES('Jack','Daniel','01-09-01'), ('Lily','Bush','80-09-01'); ログイン後にコピー 在第一行中,我们使用01(范围00-69)作为年份,因此MySQL将其转换为2001年。在第二行中,我们使用80(范围70-99)作为年份,MySQL将其转换为1980年。 最后,我们可以从people表中查询数据,以检查数据是否已根据转换规则进行转换。 SELECT first_name, last_name, birth_date FROM people; ログイン後にコピー DATETIME 类型 DATETIME 类型用于需要同时包含日期和时间信息的值,在存储时需要 8 个字节。日期格式为 ' 在给 DATETIME 类型的字段赋值时,可以使用字符串类型或者数字类型的数据插入,只要符合 DATETIME 的日期格式即可,如下所示。
DATETIME值可以包括具有YYYY-MM-DD HH:MM:SS[.fraction]例如的格式的尾随小数秒到微秒 2015-12-20 10:01:00.999999。包含小数秒精度时,DATETIME值需要更多存储空间,如下表所示:
例如,2015-12-20 10:01:00.999999 需要8个字节,5个字节用于2015-12-20 10:01:00 ,3个字节用于.999999 而2015-12-20 10:01:00.9 只需要6个字节,1个字节用于小数秒精度。 TIMESTAMP 类型 TIMESTAMP 的显示格式与 DATETIME 相同,显示宽度固定在 19 个字符,日期格式为 YYYY-MM-DD HH:MM:SS,在存储时需要 4 个字节。但是 TIMESTAMP 列的取值范围小于 DATETIME 的取值范围,为 '1970-01-01 00:00:01'UTC~'2038-01-19 03:14:07'UTC。在插入数据时,要保证在合法的取值范围内。
TIMESTAMP 与 DATETIME 除了存储字节和支持的范围不同外,还有一个最大的区别是:
MySQL TIMESTAMP以UTC值存储。但是,MySQL将DATETIME值存储为没有时区的值。我们来看下面的例子。 首先,将当前连接的时区设置为+00:00。 SET time_zone = '+00:00'; ログイン後にコピー 接下来,创建一个表命名timestamp_n_datetime是由两列组成:ts与dt用TIMESTAMP和DATETIME使用下面的语句类型。 CREATE TABLE timestamp_n_datetime ( id INT AUTO_INCREMENT PRIMARY KEY, ts TIMESTAMP, dt DATETIME ); ログイン後にコピー 然后,将当前日期和时间插入 timestamp_n_datetime 表的两个ts和每dt列 , INSERT INTO timestamp_n_datetime(ts,dt) VALUES(NOW(),NOW()); ログイン後にコピー 之后,从timestamp_n_datetime表中查询数据。 SELECT ts, dt FROM timestamp_n_datetime; ログイン後にコピー DATETIME和TIMESTAMP列中的值都相同。 最后,将连接的时区设置为+03:00并再次从timestamp_n_datetime表中查询数据。 SET time_zone = '+03:00'; SELECT ts, dt FROM timestamp_n_datetime; ログイン後にコピー 如您所见,TIMESTAMP列中的值不同。这是因为当我们更改时区时,TIMESTAMP列以UTC格式存储日期和时间值,根据新时区调整列的值。 这意味着如果您使用TIMESTAMP数据存储日期和时间值,则在将数据库移动到位于不同时区的服务器时应认真考虑。 【相关推荐:mysql视频教程】 |
以上がmysql の日付にはどのような型が使用されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。