mysql 截取身份证号出生日期
时间: 2023-12-04 14:41:59 浏览: 166
可以使用MySQL的substring函数截取身份证号中的出生日期,具体方法如下:
```mysql
select idno as 身份证号, cast(substring(idNo,7,8) as date) as 出生日期 from t_person;
```
其中substring函数的第一个参数是要截取的字符串,第二个参数是截取的起始位置,第三个参数是截取的长度。在这里,我们从身份证号的第7个字符开始截取8个字符,即出生日期。使用cast函数将其转换为日期格式,以便更好地进行处理。
相关问题
sql语句用substr截取身份证
在SQL中,`SUBSTRING` 或 `SUBSTR` 函数通常用于从字符串中提取指定长度的部分,但请注意,不是所有数据库系统都支持这个函数。对于需要截取身份证号码的情况,中国常用的身份证号码由18位数字组成,分为前6位区域码、第7到14位出生日期、最后4位校验码。
如果你是在MySQL中,可以这样截取:
```sql
SELECT SUBSTRING(身份证字段, 1, 6) AS 区域码,
SUBSTRING(身份证字段, 7, 8) AS 出生日期,
SUBSTRING(身份证字段, 17, 4) AS 校验码
FROM 表名;
```
如果在Oracle中,则使用:
```sql
SELECT TRIM(BOTH ' ' FROM (SUBSTR(身份证字段, 1, 6) || '-' ||
TRUNC(SUBSTR(身份证字段, 7, 8)) || '-' ||
SUBSTR(身份证字段, 11, 4))) AS 身份证信息
FROM 表名;
```
这里假设身份证字段名称为`身份证字段`,并且已经转换为合适的数据类型处理。注意SQL语句的具体格式可能会因数据库的不同而有所差异。
mysql通过身份证获取生日
在MySQL中,可以通过字符串函数来解析身份证号码,进而获取生日信息。中国的身份证号码分为15位和18位,其中18位身份证号码中包含出生年月日信息,格式为YYYYMMDD。
假设有一个名为`people`的表,其中有一个字段`id_card`用于存储18位身份证号码。以下是一个SQL查询示例,用于从身份证号码中提取出生日期:
```sql
SELECT
SUBSTRING(id_card, 7, 8) AS birth_date
FROM
people;
```
这个查询使用`SUBSTRING`函数从第7位开始截取8个字符,这8个字符正好是身份证号码中的出生年月日部分。
如果你需要将出生日期进一步格式化为`YYYY-MM-DD`格式,可以使用`DATE_FORMAT`函数,如下所示:
```sql
SELECT
DATE_FORMAT(DATE_SUB('1970-01-01', INTERVAL 0 MICROSECOND - INTERVAL SUBSTRING(id_card, 7, 8) SECOND), '%Y-%m-%d') AS birth_date
FROM
people;
```
这里稍微复杂一些,因为我们首先创建了一个基准日期`1970-01-01`,然后用身份证中的出生日期与基准日期之间的时间差(以秒为单位)来计算出生日期,最后使用`DATE_FORMAT`函数格式化输出。
阅读全文