0

我需要将字符串转换为日期格式以获取该月的第一天和最后一天。

输入。

声明 @InpDat 为 VARCHAR(20) 设置 @InpDat = 201308

预计产量 2013-08-31

我需要得到给定年月的第一天和最后一天。你能帮我弄到那个吗?

我尝试使用转换选项但无法获得它。?

4

3 回答 3

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

DEMO

于 2013-09-16T20:28:41.700 回答
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
于 2013-09-16T20:27:15.207 回答
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))

现在使用您最喜欢的格式化功能进行格式化。

于 2013-09-16T20:29:27.453 回答