MySQL 如何将INT类型的yyyymmdd转换为日期?

MySQL 如何将INT类型的yyyymmdd转换为日期?

在使用数据库时,我们常常会遇到需要将INT类型的yyyymmdd转换为日期类型的情况。下面来介绍一下如何实现这一过程。

阅读更多:MySQL 教程

简单粗暴法

我们可以将yyyymmdd转换成字符串,再使用自带的日期转换函数将其转换成日期类型。示例如下:

SELECT STR_TO_DATE(CAST(20190101 AS CHAR), '%Y%m%d') AS date_result;

在代码中,我将整型的20190101转换成了字符串类型的”20190101″,然后使用MySQL自带的STR_TO_DATE函数将其转换成日期类型,格式化字符串中,%Y表示四位年份,%m表示月份,%d表示日期。

思路简单,实现容易,不过需要注意代码中整型向字符串类型的转换,以及日期格式化字符串的语法。

相对高级一点的做法

我们可以借助数学方法来将yyyymmdd分离成年、月、日三个部分,然后使用自带的日期函数将其转换成日期类型。示例如下:

SELECT DATE_ADD(DATE_ADD(DATE_ADD('19000101', INTERVAL 20190101 DIV 10000 YEAR), INTERVAL (20190101 DIV 100) MOD 100 - 1 MONTH), INTERVAL 20190101 MOD 100 - 1 DAY) AS date_result;

在代码中,我们将”19000101″作为一个基准日期,使用DATE_ADD函数,按照整型yyyymmdd的年、月、日三个部分,分别加上相应的时间间隔,得到的就是日期类型的结果。

这种方法思路稍微复杂一些,但是并不需要进行类型转换,避免了字符串格式化的困扰。

Python示例代码

同样的,我们在Python中也可以实现将整型yyyymmdd转换成日期类型的方法。示例如下:

import datetime

def convert_int_to_date(int_date):
    str_date = str(int_date)
    year = int(str_date[:4])
    month = int(str_date[4:6])
    day = int(str_date[6:8])
    return datetime.date(year, month, day)

print(convert_int_to_date(20190101))

在代码中,我们先将像20190101这样的整型转换成字符串,再将其中的年、月、日三个部分分离出来,使用datetime.date函数将其转换为日期类型。

结论

我们可以使用简单粗暴的字符串转换方法,或者使用相对复杂但灵活性更高的日期函数方法来将整型yyyymmdd转换成日期类型。在Python中同样可以实现这一目标。根据实际需求和语言习惯来选择合适的方法吧。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程