MYSQL:如何将字符串转换为月份(数字)

时间:2013-03-29 17:31:30

标签: mysql string-conversion date-conversion

我有几个月的简短版本:JAN, FEB, MAR等等。

并希望将它们转换为相应的数值:1, 2, 3

此外,我希望能够在数字月份值,“短”月份名称(JAN, FEB, MAR)和长版本(January, February, March等)之间来回切换。 )



注意:正如@ dipu-raj指出的那样,这不是重复,因为我问的是与MySQL MONTHNAME() from numbers 相反的答案,答案是不同的,因为它是它需要不同的功能

4 个答案:

答案 0 :(得分:12)

要将缩写转换为完整月份名称,请使用:

mysql> select monthname(str_to_date('Mar','%b'));
+------------------------------------+
| monthname(str_to_date('Mar','%b')) |
+------------------------------------+
| March                              |
+------------------------------------+

要将缩写转换为数字,请使用:

mysql> select month(str_to_date('Mar','%b'));
+--------------------------------+
| month(str_to_date('Mar','%b')) |
+--------------------------------+
|                              3 |
+--------------------------------+

答案 1 :(得分:1)

您可能需要熟悉MySQL Date函数。对于您的案例,STR_TO_DATE()DATE_FORMAT()似乎最有用。这是一个信息的链接:

https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date

答案 2 :(得分:0)

JAN 到其月份编号;将您的列/值替换为下面的FEB

date_format(str_to_date(concat(2012, 'FEB'), '%Y%b'), '%m')
                                     ^^^^^

1 以其短月名称;将您的列/值替换为指示:

 date_format(str_to_date(concat('2012-', 1), '%Y-%m'), '%b')
                                         ^

使用%M代替%b作为上一个值来获取漫长的月份名称。

答案 3 :(得分:-1)

试试这个:

    $date = 'Jan';
    echo 'Month number is '.date('n', strtotime($date)).'</br>';
    echo 'and its '.date('F', strtotime($date));

使用PHP Manual - Date/Time Functions获取更多格式选项。