我需要将字符串转换为日期格式以获取该月的第一天和最后一天。
输入
DECLARE @InpDat AS VARCHAR(20) SET @InpDat = 201308
预期产出2013-08-31
我需要获得给定年月的第一天和最后一天。能帮助我做到这一点。
我尝试使用转换选项,但无法得到它。 ?
答案 0 :(得分:1)
使用CAST(@InpDat + '01' AS DATE)
将其转换为日期,并使用DateAdd
作为日期算术。
DECLARE @InpDat AS VARCHAR(20) SET @InpDat = '201308'
DECLARE @Month DATE SET @Month = CAST(@InpDat + '01' AS DATE)
SELECT @MONTH AS First,
DATEADD(day, -1, DATEADD(month, 1, @MONTH)) AS Last
答案 1 :(得分:0)
DECLARE @InpDat AS VARCHAR(20)
SET @InpDat = '201308'
SELECT CONVERT(DATETIME(@InpDat+'01') AS FirstDate,
DATEADD(dd,-1,DATEADD(mm,1,CONVERT(DATETIME(@InpDat+'01'))) AS LastDate
答案 2 :(得分:0)
为什么您希望随机数转换为日期格式而不会有任何哄骗?数据库是一个强大的工具,但不是神奇的。
您必须将数字解析为日期,然后按照您喜欢的方式格式化日期。我可能会建议这一系列的电话:
-- assume you can separate the year and month into separate parts.
-- use 01 as default day for now, we'll get last day shortly.
DECLARE @IntermediateDate AS DATE SET @IntermediateDate = DATEFROMPARTS(2013,08,01)
-- Advance the month by one, and subtract one day to find the last day of the month.
SET @IntermediateDate = DATEADD( dd, -1, DATEADD( mm, 1, @IntermediateDate))
现在使用您喜欢的格式化功能进行格式化。