03 cast和substring函数的使用-从身份证号取生日

03 cast和substring函数的使用-从身份证号取生日

01 背景

类型格式转换。取出身份证中的生日并转成指定格式。
学生表,表结构如下
image.png

CREATE TABLE `student`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `stu_id` int(11) NOT NULL,
  `stu_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '学生姓名',
  `alias` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '别名',
  `id_num` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '身份证号',
  `cls_id` int(11) NULL DEFAULT NULL COMMENT '班级ID',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

数据内容如下
image.png

INSERT INTO `student`(`id`, `stu_id`, `stu_name`, `alias`, `id_num`, `cls_id`) VALUES (1, 1001, '赵云', '', '330105200503111627', 1);
INSERT INTO `student`(`id`, `stu_id`, `stu_name`, `alias`, `id_num`, `cls_id`) VALUES (2, 1002, '张飞', NULL, '12022519980527003X', 1);
INSERT INTO `student`(`id`, `stu_id`, `stu_name`, `alias`, `id_num`, `cls_id`) VALUES (3, 1003, '关羽', '美髯公', '460102200506050313', 1);
INSERT INTO `student`(`id`, `stu_id`, `stu_name`, `alias`, `id_num`, `cls_id`) VALUES (4, 2001, '司马懿', NULL, '330106201406200012', 2);
INSERT INTO `student`(`id`, `stu_id`, `stu_name`, `alias`, `id_num`, `cls_id`) VALUES (5, 2002, '夏侯惇', NULL, '330105200501272822', 2);

2 需求

从每个学生的身份证号中得到学生的生日,并用-连接显示

  • 取身份证号
  • 转换成日期
  • 日期用-连接

3 操作

3.1 substring函数

substring函数从特定位置开始返回一个子字符串的功能。大体上有两种形式。

  • substring(string,position) 从给定位置开始返回后面的子字符串
  • substring(string,position,lenth) 从给定位置开始返回指定长度的子字符串

⚠️ 如果 position0,则返回一个空字符串。

SELECT
	stu_name,
	id_num,
	substring( id_num, 7, 8 ) as birthday
FROM
	student

image.png

3.2 使用cast函数进行格式转换

cast函数格式为cast(字段名 as 转换的类型),其中类型可以为:

  • char 字符型
  • date 日期型
  • datetime 日期和时间型
  • decimal float型
  • signed int型
  • time 时间型
posted @ 2020-11-28 14:43  在线打工者  阅读(1089)  评论(0编辑  收藏  举报