在MySQL中将月份名称和年份的列转换为格式为YYYYMM的整数

时间:2018-12-06 17:22:45

标签: mysql date date-conversion

我有一个日期列,如下一个存储为VARCHAR(不是DATE类型的日期列),我想将其转换为具有以下格式的INTEGER类型:{{1} }。因此,例如,如果这是我的示例数据:

YYYYMM

我想获取下一个整数:

period
"January 2018"
"February 2018"
"March 2018"

我尝试了下一个代码:

result
201801
201802
201803

但是这给出了select period, str_to_date(period, '%M %Y') as yearperiod from table 格式,我想将其转换为整数2018-01-00

1 个答案:

答案 0 :(得分:1)

您可以使用下一个 MySQL 方法序列进行此操作:

(1)。首先应用STR_TO_DATE(period, '%M %d %Y')

(2),然后将DATE_FORMAT(<previous_result>, "%Y%m")应用于上一个结果。

(3),最后使用CONVERT(<previous_result>, UNSIGNED)对前一个结果进行整数转换。

这在下一个示例中显示:

SELECT
    period,
    CONVERT(
      DATE_FORMAT(
        STR_TO_DATE(period, '%M %d %Y'),
        "%Y%m"
      ),
      UNSIGNED
    ) AS yearAndPeriod
FROM
    <table_name>

此外,您可以在此处进行检查:

DB Fiddle