2017-05-29 39 views
1

我試圖從我的日期列中只獲取月份,而我似乎無法使用我的查詢來獲取它。從MM-DD-YYYY格式獲取月sql

DATE是我的專欄,我只想顯示月份。你們能幫助我嗎?

查詢:

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

您的代碼看起來很像SQL服務器,所以我改變了標籤。 –

+0

「DATE」列的數據類型是「DATETIME」還是其他?不明白你爲什麼使用'GETDATE(DATE)',在這種情況下'SELECT MONTH(CONVERT(VARCHAR(8),[DATE],1))'會工作。 – Arulkumar

+0

我的DATE列就像是這樣1/1/2017 .... 和我正在使用phpmyadmin中的MySql –

回答

2

如果DATE is in varchar,you need to convert as DATE format using

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

+0

這工作!!!!謝謝!!!! :D –

+0

@VirgilCruz請讓這是一個關於如何提出一個好問題的教訓。 Gordon猜對了Sql Server。年輕人猜對了甲骨文。我猜你的專欄是日期/日期時間數據類型。請不要讓我們猜測。首先在問題中包含所有相關的詳細信息。 –

0

如果你有DATE列,然後在SQL Server中,你可以通過執行獲得數字月份:

select month(datecol) 

select datepart(month, datecol) 

如果您想要月份的名稱,請使用datename()

select datename(month, datecol) 
0

Oracle? SQL Server? MySQL的?

甲骨文語法:

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

好時,MySQL有monthmonthname功能。您可以在official documentation.

瞭解他們,如果它是MySQL中,您的查詢可能應該是這樣的:

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

要獲得一個月的名稱,使用這樣的:

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

查詢工作。但它返回空結果..我的日期格式是2017年1月1日。也許它的閱讀喜歡2017.1.1? –

+0

日期不以顯示格式存儲。無論如何,我看到Arulkumar已經給你正確的答案。 –