从 MMM(M)YYYY 中提取月份的最后一天
Extract last day of the month from MMM(M)YYYY
如何从
这样的日期中提取月份的最后一天
2009 年 12 月、2013 年 4 月、2008 年 8 月、2017 年 11 月、2014 年 7 月等
我已经尝试过 datepart、convert、cast、month、year,但我总是遇到类型转换错误。
使用try_convert
和eomonth()
declare @date varchar(7)='jul2014'
select Day(EOMonth(Try_Convert(date, @date)))
您可以尝试以下方法:
SELECT
dt,
DATEADD(day, -1, DATEADD(month, 1,
CONVERT(datetime, '01' + dt, 106))) AS dt_eom
FROM yourTable;
这里的策略是首先从例如DEC2009
字符串 01DEC2009
。然后,我们使用 CONVERT
和掩码 106。我们通过加一个月然后减去一天来获得该月的最后一天。
你可以用这个
DECLARE @date VARCHAR(20)='DEC2009'
SELECT Day(CONVERT(NVARCHAR,CAST(DATEADD(MM,DATEDIFF(MM, -1, @date),-1) AS
DATE),100))
和
SELECT
date,
Day(CONVERT(NVARCHAR,CAST(DATEADD(MM,DATEDIFF(MM, -1, date),-1) AS
DATE),100)) AS date_eom
FROM Table;
您可以使用 EOMONTH
函数获取一个月中的最后一天。
首先构造一个实际的日期值:在开头添加01
,然后使用样式106
进行转换。如果您只是使用 CONVERT
或 CAST
而没有样式参数,您可能会 运行 由于当地文化而出现问题。相反,您应该明确指定样式。
SELECT
dt,
EOMONTH( CONVERT(date, '01' + dt, 106) ) AS dt_eom
FROM yourTable;
谢谢大家(Larnu 似乎没看懂或回答问题除外)
你的有用建议,特别是“TRY_CONVERT”让我能够处理两个条目,其中月份是 4 个字符的字段。我的最终代码是:
EOMONTH(CONVERT(DATE, LEFT(TRIM(myField),3) + RIGHT(TRIM(myField),4)))
而且效果很好。 :)
快乐的日子!
如何从
这样的日期中提取月份的最后一天2009 年 12 月、2013 年 4 月、2008 年 8 月、2017 年 11 月、2014 年 7 月等
我已经尝试过 datepart、convert、cast、month、year,但我总是遇到类型转换错误。
使用try_convert
和eomonth()
declare @date varchar(7)='jul2014'
select Day(EOMonth(Try_Convert(date, @date)))
您可以尝试以下方法:
SELECT
dt,
DATEADD(day, -1, DATEADD(month, 1,
CONVERT(datetime, '01' + dt, 106))) AS dt_eom
FROM yourTable;
这里的策略是首先从例如DEC2009
字符串 01DEC2009
。然后,我们使用 CONVERT
和掩码 106。我们通过加一个月然后减去一天来获得该月的最后一天。
你可以用这个
DECLARE @date VARCHAR(20)='DEC2009'
SELECT Day(CONVERT(NVARCHAR,CAST(DATEADD(MM,DATEDIFF(MM, -1, @date),-1) AS
DATE),100))
和
SELECT
date,
Day(CONVERT(NVARCHAR,CAST(DATEADD(MM,DATEDIFF(MM, -1, date),-1) AS
DATE),100)) AS date_eom
FROM Table;
您可以使用 EOMONTH
函数获取一个月中的最后一天。
首先构造一个实际的日期值:在开头添加01
,然后使用样式106
进行转换。如果您只是使用 CONVERT
或 CAST
而没有样式参数,您可能会 运行 由于当地文化而出现问题。相反,您应该明确指定样式。
SELECT
dt,
EOMONTH( CONVERT(date, '01' + dt, 106) ) AS dt_eom
FROM yourTable;
谢谢大家(Larnu 似乎没看懂或回答问题除外)
你的有用建议,特别是“TRY_CONVERT”让我能够处理两个条目,其中月份是 4 个字符的字段。我的最终代码是:
EOMONTH(CONVERT(DATE, LEFT(TRIM(myField),3) + RIGHT(TRIM(myField),4)))
而且效果很好。 :)
快乐的日子!