Mysql 从MM-DD-YYYY格式sql获取月份

Mysql 从MM-DD-YYYY格式sql获取月份,mysql,sql,database,Mysql,Sql,Database,我试图从date列中只获取月份,但我似乎无法使用我的查询获取它 DATE是我的列字段,我只想显示月份。你们谁能在这方面帮助我 查询: SELECT MONTH(CONVERT(VARCHAR(8), GETDATE(DATE), 1)) FROM adjtime WHERE EMPLOYEE = 302 如果您有一个DATE列,那么在SQL Server中,您可以通过执行以下操作来获取数字月份: select month(datecol) 或 如果需要月份名称,请使用datename():

我试图从date列中只获取月份,但我似乎无法使用我的查询获取它

DATE
是我的列字段,我只想显示月份。你们谁能在这方面帮助我

查询:

SELECT MONTH(CONVERT(VARCHAR(8), GETDATE(DATE), 1)) FROM adjtime WHERE EMPLOYEE = 302

如果您有一个
DATE
列,那么在SQL Server中,您可以通过执行以下操作来获取数字月份:

select month(datecol)

如果需要月份名称,请使用
datename()


甲骨文?SQL Server?MySQL

Oracle语法:

TO_CHAR('05/29/2017', 'MONTH')

好吧,MySql有
month
monthname
功能。你可以在报纸上读到他们

因此,如果是MySql,您的查询可能如下所示:

SELECT MONTH(`DATE`) 
FROM `adjtime` 
WHERE `EMPLOYEE` = 302
要获取月份名称,请使用以下命令:

SELECT MONTHNAME(`DATE`) 
FROM `adjtime` 
WHERE `EMPLOYEE` = 302

如果
DATE
是varchar格式,则需要使用

STR_TO_DATE(`DATE`, '%m/%d/%Y')
使用示例数据执行示例:

CREATE TABLE `adjtime` (EMPLOYEE int, `DATE` VARCHAR (20) );

INSERT INTO `adjtime` (EMPLOYEE , `DATE`) 
SELECT 302, '1/1/2017' UNION
SELECT 302, '11/22/2017' UNION
SELECT 302, '2/20/2017' UNION
SELECT 301, '3/6/2017';

SELECT MONTH(STR_TO_DATE(`DATE`, '%m/%d/%Y')) AS `MonthNumber` 
FROM `adjtime` 
WHERE `EMPLOYEE` = 302;


Rextester演示:

您的代码看起来很像SQL Server,所以我更改了标记。列
DATE
的数据类型是
DATETIME
还是其他?我不明白为什么要使用
GETDATE(DATE)
,在这种情况下
选择月份(CONVERT(VARCHAR(8),[DATE],1))
将起作用。我的日期列类似于2017年1月1日。。。。我使用的是MySqlphpmyadmin@VirgilCruz根据您的上一条评论,我已将Sql Server标记更改为MySql。查询成功。但它返回空结果。。我的日期格式为2017年1月1日。可能其读数如2017.1.1?日期未以显示格式存储。无论如何,我看到阿鲁库玛已经给了你正确的答案。@VirgilCruz请让这成为你如何提出一个好问题的一个教训。戈登猜测是Sql Server。杨猜到了甲骨文。我猜您的列是日期/日期时间数据类型。请不要让我们猜。首先在问题中包括所有相关细节。
STR_TO_DATE(`DATE`, '%m/%d/%Y')
CREATE TABLE `adjtime` (EMPLOYEE int, `DATE` VARCHAR (20) );

INSERT INTO `adjtime` (EMPLOYEE , `DATE`) 
SELECT 302, '1/1/2017' UNION
SELECT 302, '11/22/2017' UNION
SELECT 302, '2/20/2017' UNION
SELECT 301, '3/6/2017';

SELECT MONTH(STR_TO_DATE(`DATE`, '%m/%d/%Y')) AS `MonthNumber` 
FROM `adjtime` 
WHERE `EMPLOYEE` = 302;
SELECT MONTHNAME(STR_TO_DATE(`DATE`, '%m/%d/%Y')) AS `MonthName` 
FROM `adjtime` 
WHERE `EMPLOYEE` = 302;