2014-01-14 2 views
0

Использование SQL Server Management Studio. Хотелось бы вытащить месяц только из колонки. Были попытки следующее:Получить значение месяца от DateTime

ПОПЫТКИ 1:

,Convert (CHAR, e.TERM_DATE, 110) AS [Due Date] 
      ,PAT_CASE.OLD_CASE_ID AS [Case Number] 
      ,CASE 
         WHEN e.TERM_DATE = 'MM-DD-YYYY' 
         THEN DateName(MONTH, GETDATE())  
         ELSE e.TERM_DATE 
         END AS [MONTH] 

Сообщение об ошибке:

Msg 241, Level 16, State 1, Line 1
Conversion failed when converting date and/or time from character string.

ПОПЫТКА 2:

,Convert (CHAR, e.TERM_DATE, 110) AS [Due Date] 
      ,PAT_CASE.OLD_CASE_ID AS [Case Number] 
      ,CASE 
         WHEN e.TERM_DATE = 'MM-DD-YYYY' 
         THEN DateName(month , DateAdd(month , @MonthNumber , -1))  
         ELSE e.TERM_DATE 
         END AS [MONTH] 

ОШИБКА СООБЩЕНИЕ:

Msg 137, Level 15, State 2, Line 6
Must declare the scalar variable "@MonthNumber".
Msg 156, Level 15, State 1, Line 55
Incorrect syntax near the keyword 'AND'.

ПОПЫТКА 3:

,Convert (CHAR, e.TERM_DATE, 110) AS [Due Date] 
      ,PAT_CASE.OLD_CASE_ID AS [Case Number] 
      ,CASE 
         WHEN e.TERM_DATE = 'MM-DD-YYYY' 
         THEN SUBSTRING('JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC ', (@intMonth * 4) - 3, 3) 
         ELSE e.TERM_DATE 
         END AS [MONTH] 

ОШИБКА СООБЩЕНИЕ:

Msg 137, Level 15, State 2, Line 6
Must declare the scalar variable "@intMonth".
Msg 156, Level 15, State 1, Line 55
Incorrect syntax near the keyword 'AND'.

+2

Предполагая, что 'TERM_DATE' действительно в столбце даты и времени, вы пробовали самый очевидный:' МЕСЯЦ (TERM_DATE) ', если это номер месяца вы хотите? – jpw

+0

Да и получить сообщение об ошибке: Ошибка конверсии при преобразовании даты и/или времени из символьной строки. – nfconn186

ответ

0

Ваш CAST и тот факт, что WHEN e.TERM_DATE = 'MM-DD-YYYY' ошибки в первом примере означает чтоявляется DATETIME так:

SELECT DATENAME(MONTH, e.TERM_DATE) 
+0

Спасибо, это было успешно. – nfconn186

Смежные вопросы