首页
学习
活动
专区
圈层
工具
发布

mysql添加date数据

基础概念

MySQL中的DATE数据类型用于存储日期值,格式为YYYY-MM-DD。它占用3个字节,可以表示的范围是从1000-01-019999-12-31

相关优势

  1. 存储效率DATE类型比DATETIME类型使用更少的存储空间。
  2. 时区无关DATE类型不包含时间部分,因此不受时区影响。
  3. 简单易用:在处理纯日期数据时,DATE类型提供了简洁的接口。

类型

MySQL中与日期相关的数据类型主要有:

  • DATE:仅存储日期。
  • DATETIME:存储日期和时间。
  • TIMESTAMP:存储日期和时间,且与时区有关。

应用场景

DATE类型常用于需要存储生日、纪念日、节假日等日期信息的场景。

添加DATE数据示例

假设我们有一个名为users的表,其中有一个birth_date字段是DATE类型。以下是如何向该表中添加一条包含日期数据的记录:

代码语言:txt
复制
INSERT INTO users (username, birth_date) VALUES ('JohnDoe', '1990-05-15');

遇到的问题及解决方法

问题1:插入日期时出现格式错误。

  • 原因:可能是由于插入的日期字符串格式不正确,或者超出了DATE类型的范围。
  • 解决方法:确保插入的日期字符串格式为YYYY-MM-DD,并且日期值在DATE类型的范围内。
代码语言:txt
复制
-- 错误的日期格式
INSERT INTO users (username, birth_date) VALUES ('JohnDoe', '90-05-15'); -- 会报错

-- 正确的日期格式
INSERT INTO users (username, birth_date) VALUES ('JohnDoe', '1990-05-15'); -- 正常插入

问题2:如何查询特定日期范围的记录?

  • 解决方法:使用BETWEEN关键字或比较运算符来查询特定日期范围的记录。
代码语言:txt
复制
-- 查询出生日期在1990-01-01到1999-12-31之间的用户
SELECT * FROM users WHERE birth_date BETWEEN '1990-01-01' AND '1999-12-31';

-- 或者使用比较运算符
SELECT * FROM users WHERE birth_date >= '1990-01-01' AND birth_date <= '1999-12-31';

参考链接

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MySQL DATE 函数之 DATE()

今天是日更的 100/365 天 上一章阿常给大家讲了MySQL DATE 函数之 CURTIME(),今天我们讲 MySQL DATE 函数 之 DATE()。...二、DATE()函数实例 一)DATE() 函数用来提取「日期(时间)」的日期部分 我们在数据库中执行下面这条 SELECT 语句: SELECT DATE('2022-03-30 20:00:17'...); 可以得到如下结果集: 二)DATE() 函数用来提取「日期(时间)表达式」的日期部分 前面我们在讲 NOW()函数时创建了 orders 表,并且往 orders 表中插入了 1 条数据,如下图所示...: 我们在数据库中执行下面这条 SELECT 语句: SELECT product_name, DATE(order_date) AS order_date FROM orders WHERE order_id...DATE 函数之 DATE()》就讲完啦,下节课阿常讲《MySQL DATE 函数之 EXTRACT()》。

5.4K40

MySQL的date_format()和str_to_date()

MySQL中可能都用过date_format()函数,用来做日期时间类型的格式转换, DATE_FORMAT(date,format) format格式如下所示, 可以尝试一些, 相应的,其实有个...str_to_date()函数,它的作用是将字符串转变为日期/时间,和date_format()作用是相反的。...STR_TO_DATE(str,format) 其中,srt是需要格式化为日期的字符串,format是需要使用的格式字符串,如果不能按照format解析str,str_to_date()函数返回NULL...,如果其中任何一个参数为NULL,str_to_date()函数返回NULL。...format格式如下所示, 常用format格式, 字符串转成DATE类型, 字符串转成DATETIME类型, 如果输入的字符串跟着空格,会自动进行过滤, 如果输入的字符串跟着其它的字符

3.5K10
  • MySQL DATE 函数之 CURDATE()

    今天是日更的 98/365 上一章阿常给大家讲了MySQL DATE 函数之 NOW(),今天我们讲 MySQL DATE 函数 之 CURDATE()。 CURDATE(),返回当前的日期。...我们在数据库执行一下这条 SELECT 语句: SELECT CURDATE(); 可得到如下结果集: 一、CURDATE() 实例 创建带有日期列(order_date)的 "orders" 表...NOT NULL DEFAULT(CURDATE()), PRIMARY KEY (order_id) ) 请注意,这里的 CURDATE() 需要用括号括起来,在 MySQL中 default 后只能是一个常量...order_date 列规定 CURDATE() 作为默认值,当您向表中插入行时,order_date 将作为结果以当前日期自动插入列中。...到此,《MySQL 的内建日期函数 CURDATE())》就讲完啦,下节课阿常讲《MySQL 的内建日期函数 CURTIME()》。

    2.6K30

    DATE_FORMAT() 函数解读【MYSQL】

    MySQL中的DATE_FORMAT()函数是一个非常有用的工具,它允许你按照指定的格式显示日期/时间值。这个函数非常灵活,可以处理各种日期和时间格式的需求。...DATE_FORMAT()函数的基本语法DATE_FORMAT()函数的基本语法如下:DATE_FORMAT(date, format)date:是你要格式化的日期或时间值。...示例示例1:格式化日期为“年-月-日”的形式SELECT DATE_FORMAT(event_date, '%Y-%m-%d') AS formatted_date FROM events;这将返回每个事件的日期...示例2:格式化日期为“月/日/年”的形式SELECT DATE_FORMAT(event_date, '%m/%d/%Y') AS formatted_date FROM events;这将返回每个事件的日期...示例3:包含时间的格式化如果event_date是一个包含时间的日期时间列,你可以这样格式化它:SELECT DATE_FORMAT(event_date, '%Y-%m-%d %H:%i:%s') AS

    13.1K32

    MySQL 时间类型 DATE、DATETIME和TIMESTAMP

    1.DATE、DATETIME和TIMESTAMP 表达的时间范围 Type Range Remark DATE '1000-01-01' to '9999-12-31' 只有日期部分,没有时间部分 DATETIME...MySQL converts TIMESTAMP values from the current time zone to UTC for storage, and back from UTC to the...testtime(id int,hiredate timestamp); create table testtime1(id int,hiredate datetime); 向这两个测试表中分别插入一笔测试数据...testtime1 values(1,'20151208000000'); 查看这种显示的时区时间设置 查询命令 show variables like '%time_zone%'; 上述“CST”指的是MySQL...4.TIMESTAMP在新旧版本上的重大区别 TIMESTAMP 在mysql 5.6.5之后,TIMESTAMP(fraction)中的fraction代表的是小数位数,即默认秒,以秒为单位的小数点位数

    4.7K30

    Mysql数据库 数据类型 year,time,date,datetime,timestamp 的区别

    Mysql数据库 数据类型 year,time,date,datetime,timestamp 的区别...强烈推介IDEA2020.2破解激活,IntelliJ IDEA 注册码,2020.2 IDEA 激活码 1.五种类型所表示的日期格式(为了显而易见,字段名即类型名) year 年 date 年-月-...增改会跟操作时间保持一致(客户端经处理的当前时间) 由于原因1存储方式不同,timestamp无论增改都是根据将客户端的当前时间转为UTC(世界标准时间)来存储,所以timestamp不为空,单条记录的数据行字段类型为...timestamp的列值为最后一次操作的时间(修改其他列的数据,同行数据类型为timestrap的列值会变为客户端经处理的当前时间)。

    2.3K40

    Mysql使用存储过程快速添加百万数据

    为了体现不加索引和添加索引的区别,需要使用百万级的数据,但是百万数据的表,如果使用一条条添加,特别繁琐又麻烦,这里使用存储过程快速添加数据,用时大概4个小时。...'用户类型 1,2,3,4 随机', PRIMARY KEY (`id`), KEY `idx_username` (`username`) USING BTREE ) 然后创建存储过程,批量添加数据...1 + rand() * 4)); set i = i + 1; end while; end 然后调用存储过程 call salesAdd() 改进版 虽然使用存储过程添加数据相对一个个添加更加便捷...,快速,但是添加几百万数据要花几个小时时间也是很久的,后面在网上找到不少资料,发现mysql每次执行一条语句都默认自动提交,这个操作非常耗时,所以在在添加去掉自动提交。

    4.1K20

    Mysql使用存储过程快速添加百万数据

    前言 为了体现不加索引和添加索引的区别,需要使用百万级的数据,但是百万数据的表,如果使用一条条添加,特别繁琐又麻烦,这里使用存储过程快速添加数据,用时大概4个小时。...'用户类型 1,2,3,4 随机', PRIMARY KEY (`id`), KEY `idx_username` (`username`) USING BTREE ) 然后创建存储过程,批量添加数据...set i = i + 1; end while; end // DELIMITER ; 这里需要注意的是DELIMITER//和DELIMITER;两句, DELIMITER是分割符的意思,因为MySQL...然后调用存储过程 call salesAdd() 改进版 虽然使用存储过程添加数据相对一个个添加更加便捷,快速,但是添加几百万数据要花几个小时时间也是很久的,后面在网上找到不少资料,发现mysql每次执行一条语句都默认自动提交...,这个操作非常耗时,所以在在添加去掉自动提交。

    2.4K20

    MySQL 添加数据 insert 命令及优化

    insert [into] 表名 value(值1, 值2[, ...]); 只添加一条数据时,也可以使用 insert ... set 命令 此方式无法插入空值 insert into 表名 set...给指定的字段添加数据,则没有被指定的字段必须有默认值 CREATE TABLE `user` (  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID,...一次添加多条数据 CREATE TABLE `user` (  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID,主键且自增',  `nickname...添加一条数据的两种写法 CREATE TABLE `user` (  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID,主键且自增',  `nickname...insert ... set insert into user set `nickname` = '大王', `status` = '0'; 添加多条数据 insert into user(`nickname

    1.8K30
    领券