MySQL数据库日期类型
在MySQL中,日期和时间数据类型用于表示日期和时间值,这些类型包括DATE、TIME、DATETIME、TIMESTAMP和YEAR,每种类型都有其特定的用途和格式要求,下面将详细解释这些类型及其用法。
DATE类型
1、定义:DATE类型用于存储日期值,格式为'YYYY-MM-DD'。
2、存储空间:DATE类型占用3个字节的存储空间。
3、范围:支持的日期范围从'1000-01-01'到'9999-12-31'。
4、插入方式:可以使用字符串或数字赋值给DATE列。'2012-12-31'、'2012/12/31'、'201231'等都是合法的日期常量。
5、示例:
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 ); INSERT INTO people (first_name, last_name, birth_date) VALUES ('Max', 'Su', '1992-10-11');
TIME类型
1、定义:TIME类型用于存储时间值或持续时间,格式为'HH:MM:SS'。
2、存储空间:TIME类型占用3个字节的存储空间。
3、范围:支持的时间范围从'-838:59:59'到'838:59:59'。
4、插入方式:可以使用字符串或数字赋值给TIME列。'10:11:12'、'101112'等都是合法的时间常量。
5、示例:
CREATE TABLE work_hours ( id INT AUTO_INCREMENT PRIMARY KEY, start_time TIME NOT NULL, end_time TIME NOT NULL ); INSERT INTO work_hours (start_time, end_time) VALUES ('09:00:00', '17:30:00');
DATETIME类型
1、定义:DATETIME类型是DATE和TIME的组合,格式为'YYYY-MM-DD HH:MM:SS'。
2、存储空间:DATETIME类型占用8个字节的存储空间。
3、范围:支持的日期时间范围从'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。
4、插入方式:可以使用字符串或数字赋值给DATETIME列。'2012-12-31 11:30:45'、'201231 11+30+45'等都是合法的日期时间常量。
5、示例:
CREATE TABLE events ( id INT AUTO_INCREMENT PRIMARY KEY, event_name VARCHAR(100) NOT NULL, event_time DATETIME NOT NULL ); INSERT INTO events (event_name, event_time) VALUES ('Conference', '2023-09-25 14:00:00');
TIMESTAMP类型
1、定义:TIMESTAMP类型用于表示时间戳,格式为'YYYY-MM-DD HH:MM:SS'。
2、存储空间:TIMESTAMP类型占用4个字节的存储空间。
3、范围:支持的时间戳范围从'1970-01-01 00:00:01' UTC到'2038-01-19 03:14:07' UTC。
4、自动更新:TIMESTAMP列具有自动更新特性,默认值为当前时间戳,当行数据更新时,该列会自动更新为当前时间戳。
5、示例:
CREATE TABLE updates ( id INT AUTO_INCREMENT PRIMARY KEY, update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); INSERT INTO updates () VALUES ();
YEAR类型
1、定义:YEAR类型用于存储年份值,格式为YYYY。
2、存储空间:YEAR类型占用1个字节的存储空间。
3、范围:支持的年份范围为1901到2155。
4、插入方式:可以使用字符串或数字赋值给YEAR列。'2021'、2021等都是合法的年份常量。
5、示例:
CREATE TABLE years ( id INT AUTO_INCREMENT PRIMARY KEY, year YEAR NOT NULL ); INSERT INTO years (year) VALUES (2023);
相关问题与解答栏目
问题1:如何在MySQL中插入包含小数秒的时间值?
答:在MySQL 5.6.4及更高版本中,可以使用TIME、DATETIME和TIMESTAMP类型的小数秒功能。
CREATE TABLE test_table ( t TIME(6), dt DATETIME(6), ts TIMESTAMP(6) ); INSERT INTO test_table (t, dt, ts) VALUES ('12:34:56.123456', '2023-09-25 12:34:56.123456', '2023-09-25 12:34:56.123456');
问题2:如何将不合法的日期值转换为零日期值?
答:当严格模式被禁用时,MySQL会将不合法的日期值转换为零日期值'0000-00-00'。
SET @@global.sql_mode=''; INSERT INTO people (birth_date) VALUES ('2015-02-30'); -这将插入零日期值
各位小伙伴们,我刚刚为大家分享了有关“mysql数据库 日期_日期类型”的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!