从MM-DD-YYYY格式sql获得月份

时间:2017-05-29 10:59:39

标签: mysql sql database

我正在尝试从我的日期列中获取该月份,而我似乎无法使用我的查询获取它。

DATE是我的列字段,我只想显示月份。你能帮我解决这个问题吗?

查询:

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

4 个答案:

答案 0 :(得分:2)

如果DATE在varchar中,则需要使用

转换为DATE格式
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;

Rextester演示:http://rextester.com/GFOTO88036

答案 1 :(得分:0)

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

select month(datecol)

select datepart(month, datecol)

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

select datename(month, datecol)

答案 2 :(得分:0)

甲骨文? SQL Server? MySQL的?

Oracle语法:

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

答案 3 :(得分:0)

嗯,MySql有monthmonthname个函数。您可以在official documentation.

中了解相关信息

因此,如果它是MySql,您的查询应该如下所示:

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

要获取月份名称,请使用:

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