MySQL MONTHNAME()from numbers

e5nqia27  于 2023-06-21  发布在  Mysql
关注(0)|答案(6)|浏览(122)

有没有办法从月份的数字(1-12)中获得MONTHNAME()?例如,如果我有6,7,8,MySQL中有没有任何本地方法可以将其转换为June,July,August

zzlelutf

zzlelutf1#

您可以使用STR_TO_DATE()将数字转换为日期,然后使用MONTHNAME()将其转换回来

SELECT MONTHNAME(STR_TO_DATE(6, '%m'));

+---------------------------------+
| MONTHNAME(STR_TO_DATE(6, '%m')) |
+---------------------------------+
| June                            |
+---------------------------------+

警告:如果在很多行上执行,这可能会很慢。

kb5ga3dv

kb5ga3dv2#

一个有点难看的方法是SELECT MONTHNAME(CONCAT('2011-',8,'-01'));

nwo49xxi

nwo49xxi3#

在阅读迈克尔的精彩回答之前,我曾有过这样的想法

select elt(3,'January','February','March',....)

但他的更好:)

polhcujo

polhcujo4#

这样你就可以得到不同语言的周名或月名
本地化工作日:

`SELECT ELT( WEEKDAY('2004-04-10')+1, 'Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag');`

带月份的长版本:

`SELECT DATE_FORMAT( '2004-04-10', CONCAT( ELT( WEEKDAY('2004-04-10')+1, 'Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'),', %d. ', ELT( MONTH('2004-04-10'), 'Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'),' %Y'));`
  • -> Samstag,10.二零零四年四月
    unix-timestamp:
`SELECT DATE_FORMAT( FROM_UNIXTIME(1081548000), CONCAT( ELT( WEEKDAY(FROM_UNIXTIME(1081548000))+1, 'Mo','Di','Mi','Do','Fr','Sa','So'),', %d. ', ELT( MONTH(FROM_UNIXTIME(1081548000)), 'Jan.','Feb.','März','April','Mai','Juni','Juli','Aug.','Sept.','Okt.','Nov.','Dez.'),' %Y'));`
  • -> Sa,2004年4月10日
gv8xihay

gv8xihay5#

试试这个:选择monthname('2016 -01- 01')为一月或选择monthname('2016 -03- 01')为三月

js5cn81o

js5cn81o6#

SELECT 
        `mktp_target`.`id` AS `id`, 
        `mktp_target`.`target_year` AS `target_year`,
        `mktp_target`.`target_month` AS `target_month`,
        monthname(concat(`mktp_target`.`target_year`,'-',lpad(`mktp_target`.`target_month`, 2, '0'),'-', '01')) AS `target_month_name`
    FROM
        `mktp_target`

相关问题