将期间转换为月的第一天

时间:2017-03-01 16:40:37

标签: sql-server

我正在尝试将句点列表转换为该月的第一天。

下的期间和新产出的例子
Period  new_date
DEC-16  01/12/2016
JAN-17  01/01/2017
FEB-17  01/02/2017

我尝试过很多东西,但是我遇到了不同的类型。我也想以最有效的方式来做这个相当大的表。

我在SQL server

中这样做

3 个答案:

答案 0 :(得分:0)

对不起我之前的回答,我误解了。你想要这个:

SELECT [Period], DATEADD(
    Month, 
    CASE LEFT([Period], 3) WHEN 'JAN' THEN 1 WHEN 'FEB' THEN 2 WHEN 'MAR' THEN 3 WHEN 'APR' THEN 4 WHEN 'MAY' THEN 5 WHEN 'JUN' THEN 6 WHEN 'JUL' THEN 7 WHEN 'AUG' THEN 8 WHEN 'SEP' THEN 9 WHEN 'OCT' THEN 10 WHEN 'NOV' THEN 11 WHEN 'DEC' THEN 12 END - 1, 
    DATEADD(Year, CAST(SUBSTRING([Period], 5, 100) as int), '2000-01-01')) AS [new_date]
FROM (
    SELECT 'DEC-16' as [Period]
    UNION ALL SELECT 'JAN-17' AS [Period]
    UNION ALL SELECT 'FEB-17' AS [Period]
) AS [TEST]

答案 1 :(得分:0)

试试这个,

declare @t table(Period varchar(50))
insert into @t VALUES
('DEC-16')
,('JAN-17')
,('FEB-17')


select Period, cast('01-'+Period as date) new_Date 
from @t

答案 2 :(得分:-2)

SELECT DATEADD(月,DATEDIFF(月,0,演员('1 - '+左(句号,3)+右(句号,3)作为日期)),0)来自[table_name]的AS StartOfMonth