MySQL MONTHNAME() 来自数字

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/7027129/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-31 20:50:13  来源:igfitidea点击:

MySQL MONTHNAME() from numbers

mysql

提问by Hunter McMillen

Is there anyway to get the MONTHNAME()from just the number of the month (1-12)? For example if I have 6,7,8is there any native way in MySQL to transform those into June,July,August?

有没有办法MONTHNAME()只从月数(1-12)中得到?例如,如果我6,7,8在 MySQL 中有任何本机方法可以将它们转换为June,July,August?

回答by Michael Berkowski

You can use STR_TO_DATE()to convert the number to a date, and then back with MONTHNAME()

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

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

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

Warning: This could be slow if done over a lot of rows.

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

回答by Mchl

A somewhat ugly way would be SELECT MONTHNAME(CONCAT('2011-',8,'-01'));

一个有点丑陋的方式是 SELECT MONTHNAME(CONCAT('2011-',8,'-01'));

回答by Nicola Cossu

Before reading Michael's great answer I had thought something like this

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

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

but his one is much better. :)

但他的要好得多。:)

回答by bharat

Such way you can get different language weekname or month name

这样你就可以得到不同语言的周名或月份名

to localize the weekday:

本地化工作日:

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

long version with month:

带月份的长版本:

`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. April 2004

--> Samstag,2004 年 4 月 10 日

same for unix-timestamp:

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, 10. April 2004

--> Sa,2004 年 4 月 10 日

回答by Ather Hashmi

try this: select monthname('2016-01-01') for January or select monthname('2016-03-01') for March

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