【发布时间】:2014-01-14 23:35:37
【问题描述】:
使用 SQL Server Management Studio。只想从列中提取月份。已尝试以下方法:
尝试 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]
错误信息:
消息 241,第 16 级,状态 1,第 1 行
从字符串转换日期和/或时间时转换失败。
尝试 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]
错误消息:
消息 137,第 15 级,状态 2,第 6 行
必须声明标量变量“@MonthNumber”。
消息 156,第 15 级,状态 1,第 55 行
关键字“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]
错误消息:
消息 137,第 15 级,状态 2,第 6 行
必须声明标量变量“@intMonth”。
消息 156,第 15 级,状态 1,第 55 行
关键字“AND”附近的语法不正确。
【问题讨论】:
-
假设
TERM_DATE确实在日期时间列,你有没有试过最明显的:MONTH(TERM_DATE)如果它是你想要的月份数? -
是并收到错误:从字符串转换日期和/或时间时转换失败。
标签: sql sql-server