我正在尝试从我的日期列中获取该月份,而我似乎无法使用我的查询获取它。
DATE
是我的列字段,我只想显示月份。你能帮我解决这个问题吗?
查询:
SELECT MONTH(CONVERT(VARCHAR(8), GETDATE(DATE), 1)) FROM adjtime WHERE EMPLOYEE = 302
答案 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有month
和monthname
个函数。您可以在official documentation.
因此,如果它是MySql,您的查询应该如下所示:
SELECT MONTH(`DATE`)
FROM `adjtime`
WHERE `EMPLOYEE` = 302
要获取月份名称,请使用:
SELECT MONTHNAME(`DATE`)
FROM `adjtime`
WHERE `EMPLOYEE` = 302